Ah, the old normalization vs. denormalization argument. I love the smell of ERD purists in the morning... er... ewww, no I don't.
The argument in favor of normalization:
Seperate entities in the database along the logical and semantic boundaries that exist in the problem domain, and you will make the design more flexible, modular, and maintainable. Changes in a single entity from the problem domain will not affect large swaths of the database. If you have different entities that both refer to the same base entity type (i.e. the database equivalent of class inheritance, where the logical entities with data in table b, and table c, both also include references to table a) then you won't repeat columns.
The argument in favor of denormalization:
You've given it. Performance. If you don't have any repeating subtypes, and you are always querying for a set of tables using a join, then why not roll the tables up into a single flat table with all the columns?
In general I prefer a normalized schema that reflects the problem domain. It's just going to cause less trouble in terms of comprehension in the future. And I would venture to say that on modern platforms the performance impact of properly constructed joins just isn't that serious to justify cramming the schema into one table. But if it were, for a given application, I wouldn't hesitate.