A standard practice of mine is to use hook_update_N() to trigger installation of new modules, e.g.:
<?php
function mymodule_update_7100() {
$modules = array('new_module', 'another_module');
module_enable($modules);
}
?>
Recently, though, probably since around 7.19, this hasn't been working - the modules aren't enabled and they must be manually enabled instead. For comparison sake, using Drush to enable the modules does still work.
I have not yet tried replicating this on a bare core installation, to verify it isn't something else causing the problem, but I will.