something is going on over there
My conclusion would be to make module.inc the key module for module and project dependency management.
Changes to install.php, system.module, update.php are relative easy to do afaik.
What i haven't covered is schema update dependencies.
Steps to take:
I don't like the idea that dependencies are not handled in a unified way. By that I mean that both module.inc and update.php code is written to handle module status. There should be a central library handling their dependencies. When we handle this in a unified way installing a big project like ubercart is easy.
When installing/enabling a module it is important to know what this module is dependent of. Ie uc_cart is dependent of uc_order. See ie http://build2be.com/sites/build2be.com/files/ubercart.neato.png