I will have one database. This simplifies solution management.
Then I would normalize my data. This simplifies data integrity issues.
Then I would add tables for each module, as required, to the base database. I would distribute this base database, but I will not distribute data for unused modules. Each module will distribute its own data when it is installed (perhaps by its installer, and not built into the module itself).
Table prefixes don't matter much, anyway, and the nice part of database sharing is that you can access each table from any module and have a common configuration file, etc.
source share