> If they are radically different, you won't be able to use them together later.
Why would you want to use them together? Their differences reflect differences in the underlying business areas. If those businesses need to somehow be combined, their representatives will have to come to a common understanding of how to translate between them, and then that business understanding can be reflected in a corresponding way in the code.
> Bob doesn't grok what Alice did when he goes to implement something in that area, and ends up introducing a bug of his own.
The biggest barriers to understanding are length and indirection, and they're the only way to make code consistent. It's easier to understand code that describes the unique problem that it solves in a unique way than code that tries to force that solution into some generalised framework.