IMO, one of the problems with the core rules of 3.5 is that - perhaps out of necessity - the classes make a ton of assumptions.
No, they don't do it out of necessity. You can look at a class like cleric as an example of how to make one generalized class extremely flexible. The reason the base flavor classes (druid, barbarian, paladin, ranger, monk) have such narrow flavor is that the designers of 3e very much wanted people to feel that WoTC was producing a 'real' version of D&D that wasn't repeating the mistakes of 2e. The designers of 3e were very much tapping into nostalga, and so they created a game that had '1e feel'. To do that, the classes had to look and feel like their 1e inspirations, and that meant carrying forward the narrow flavor of the 1e class. Cleric and thief were some of the few classes that they felt they could get away with rebuilding on a larger scale, primarily because those were the two legacy classes generally felt to have the biggest problems. But they didn't want to tinker too much with 'Paladin', 'Druid', or 'Ranger'. The result is base classes which are artificially narrow because of the baggage they are forced to carry.
They made of choice about slaying 'sacred cows', and they made the decision not to risk it. I can understand the reasoning and can't criticize much from a business perspective, even if it isn't my preference (which, is true of alot of moves WotC has done).
Oddly, this is a sacred cow I would have gladly seen roasting over an open fire and it not only persisted in to 4e, but 4e reversed the general trend in 3e and made class tropes tend to be even stronger. Fourth edition sort of completed the move from, 'Although the class has no in game existance, it is a useful abstraction of a common set of abilities from a fantasy archetype' to 'Your character actually has a class'.
None of the bases classses in my opinion needs to be narrow by definition. A base class ought to be able to encompass so many concepts that a PC has a fairly hard time telling which class(es) an NPC belongs to. If the PC can easily tell the class of an NPC, its probably too narrow.
A bit of history here, a few years after 3e came out, I started converting the 'Desert of Desolation' series to 3e, and one of the problems I ran up on was that in the module, there were these dervishes who had battle crys, went into a rage, were good at jumping, and so forth - perfect for the Barbarian class. But the Dervishes were LN, so they couldn't actually qualify for the Barbarian class. To actually do the conversion, I ended up first having to change the alignment of some of the characters, and secondly having to do something I don't normally do - create a PrC. I realized then that with very few changes to the Barbarian class, I could have avoided both things.
Those changes in a nutshell were, removing the alignment restriction (easy) and removing the 'wilderness' flavor of the barbarian (a little harder). Doing both (plus a few other changes meant to increase the self-reliance of non-spellcaster classes) created the generalized Fanatic class, which is equally at home being a primitive berserker, an initiate of a secret warrior cult, the fanatical bodygaurd of some god-king, an elite assault trooper, a pyschopathic killer, a barroom brawler, a oathsworn Templar, a heretical cultist, or any number of things. And if the class concept is slightly outside of what the Fanatic normally allows, you can modify it with traits and feats of various sorts. While it might not be a really effective adventuring build, you could play 'Conan the Fanatical Book Preservationist', a scholarly nerd obsessed with knowledge, if you really wanted to do so. I'm still thinking of ways to extend the concept even further, but the point is that some of the biggest limitations in the D&D rules set are sitting right out in the open as low hanging fruit.