I have sometimes wondered what a D&D game would be like if you stole a DragonQuest idea and adapted it to D&D. In DQ, every spell is a separate skill. You learn the equivalent of "fireball", then you start out fairly lousy at it, but get better as you apply "experience" to it. It eventually becomes fairly reliable, but not everything can.
In D&D, you could do this for spells
and items. This means that fighters have to do it as well, but they presumably have fewer items to pay attention to, and thus can develop those few to a more reliable degree. Plus, when the magic of your sword fails to function, it still works as a plain sword.
There are several mechanical ways this could be addressed, depending upon the amount of extra handling you are willing to tolerate. An easy way would be to simply apply the XP gained in leveling towards the spells or items of the players' choice, on a sliding scale based on the power of the spell or item. (That is, it takes more to develop a fireball than a magic missile. It takes more to unlock a +3 flaming sword than a +1 sword.)
You want the scale to be generous enough to allow some old things to hang around without cheesing the players off. That is, the fighter can hang onto that +1 sword ability in case it matters, and not feel unduly ripped off. But you don't want it so generous that the wizard can run up every spell to reliable, immediately.
Another option is to use a Rune Quest-style mechanic where the spells and items are made reliable via play. A utility wizard can be a utility wizard if he plays one all the time, but not reliably unless he works at it.
Whatever the means, if I'm going to nerf flexibility in high level magic, I want to put more decision in the hands of the players as to exactly how they deal with it.