Why is hook_schema() called twice?
It seems to be normal. Looking at the hook_schema documentation, you see that it is invoked in drupal_get_complete_schema() in includes/bootstrap.inc and in drupal_get_schema_unprocessed() in includes/common.inc. The main difference is that the latter does not invoke hook_schema_alter() after the hook_schema is invoked. The first of those functions seems to be called on practically every page load. The second function is called from drupal_install_schema() during the module install process.

Concluding, looking at the code it seems to me that:


It is normal
It happens because during installation, Drupal needs the un-altered schema definitions