Part of the problem with ship design is an utter inability to know what the ship will actually be doing. The best we can do is assign it to a particular location, but who knows what will come up in that location? We can't prevent an Oberth from being the only ship in the right location to answer a distress call from a pirate attack or a Miranda being caught in a time distortion that can only be escaped by science. So there's a strong temptation to try and just make all-rounders that are not bad at anything even if they're not good at anything.... like the Centaur-A.
Yep! And that's the Federation way!
[Alternatively, the Federation Way is to have some ships that are all-round 'good' like this, and other ships that exist to get gobbled up by the emergency so that a more generalist ship can come to save the day]
Basically, our future construction lineup for about the next ten years looks like:
Centaur-A-class: mediocre at everything, goodish by light ship standards
Constitution-B-class: Adequate to good at most things.
Renaissance-class: Adequate to good at everything.
Excelsior-class: pretty good at everything it's been asked to do so far, could probably use a first-generation round of refits by now.
We might slip in a few
Oberths or their science-specializing successors, but that's about it.
So in short, we now know
exactly why the Federation designs its ships the way they do. Because they want ships that can respond flexibly to emergencies, and the combination of fast communications and slow travel mean that this can require basically any ship to be capable of dealing with any emergency. The only question is
how well a given ship copes, which is more a function of size and technological sophistication than it is a function of specialization.
EDIT:
Now, if at some future time our deployment doctrine becomes more flexible, things change a bit. For instance, we can have a "sector reserve" of science and medical and specialist-tactical ships, while our "generalist" cruisers run around actually dealing with distress calls and random events, but with the option to whistle up appropriate types of support if needed.