Indeed. I tried to get in a patch to Drupal 5 to support our implementation of these kind of features, but it was too late in the cycle, so it was rejected. We either need to duplicate the functionality from the module and theme admin pages, or we need to stick in two submit callbacks to the forms, one that runs early, and one that runs last, so we can see, what was changed in the database about modules (enabled/disabled/installed) and themes (enabled/disabled). That way, we can stick our process into the enable/disable flow.
As far as I see know, adding a pre-submit and a post-submit callback is the better way to go, as it involves less core code duplication (but more database magic).
Or submit a patch to module.inc something like hook_postinstall() using module_invoke_all?