Every module that requires at least one new database table has a hook_schema to define the table layout. It's very handy because you don't have to write the SQL create table syntax yourself. Although useful, it's useless without the implementation of hook_install, and a call to drupal_install_schema to install the schema for you.
So this begs the question, why don't we just automatically install/uninstall the module's hook_schema when the module is installed/uninstalled, without requiring the implementation of hook_install/hook_uninstall? We can see examples of where this would benefit us within the Drupal core code itself. If you look at the source of aggregator.install, you see aggregator_install with one line telling Drupal to install its own module. Shouldn't Drupal be smart enough to just install the schema for us?