I can think of two ways of doing this:
Use different base tables for each module's specific data and have a common related table to store the common data.
Use a common base table and have different related tables for the specifics.
As long as the field is mapped with target-table or column through meta-data and follows the Entity module convention system would continue to work.
The shared table poses a challenge when different module records enable edits of fields.
It would also come in the way of performance (specifically query cache invalidation).
If modules are from different publishers then sharing tables is not a good idea, as the control or convention can be too tedious to maintain/manage.