This isn't just a matter of not wanting to rip off a bandaid.
There isn't even full consensus on even what those classes would be.
The MonadPlus reform proposal is just an article written up on the wiki that has languished for a bunch of years and isn't terribly seriously put forth. Also both of the classes in there have a law that no monad transformer currently implements, so do we go to 4 classes? Also how do the laws generalize to Applicative?
The actual pain from having two (four?) classes masquerading as one is actually quite little, despite appearances.
You'd think if someone actually cared someone would have implemented a fixed MonadOr and the like in a library -- and folks would be using it. There are a couple of implementations that basically cut and paste from the proposal, but there isn't any code actually using them.
Splitting MonadPlus into its constituent ideas requires defining at least a pair of classes where you have to be scared you might reach for the wrong version of orElse or <|> for a given monad is a rather ridiculously large change that potentially rather dramatically increases the penchant for user error. You have to pick new names for the operations entirely so there is no upgrade path, because otherwise its just silently wrong for many users.
Also almost all of the existing code in the entire haskell ecosystem would be broken. Not just a little bit, but a lot. MonadPlus has been with us since 1996 or so. Ripping it to pieces is not a 'hey lets discuss this over dinner' scale proposal.
It isn't clear even how some code in transformers/mtl even refactors in the presence of a split MonadOr/MonadPlus.
What you have right now is users implicitly understand if the context they are working in is one where <|> means 'do this if you fail' or <|> means 'do both'.
Moreover, there is also lot of code that actually fundamentally relies upon both of these being the same operation. The way folks overload Wadler's 1985 "list of successes" parser to let it work with either [] or Maybe to get all or one parse fundamentally relies on the punning between these different semantics within one class.
We don't even have a viable implementation of the MonadPlus reform proposal, let alone some Applicative generalization, the idea is nowhere near baked enough to just upend the entire ecosystem and replace all of the code within it.
Contrary to appearances rewriting all of the Haskell code ever written would be quite a bit of work.
It is worth exploring what those classes should be, but such a proposal has a very very high bar to clear.
The new state has to be sufficiently better from the status quo that it is worth the pain of literally breaking almost every package ever made in anything recognizable as Haskell since Haskell 1.3 and there is no real viable upgrade path. Big breaking changes require a lot of groundwork to ensure they are worth the breakage, and a clear upgrade path for users, one that is teachable.
This idea currently fails both of these tests.
Don't get me wrong. I'd love to have a nicer story here, but I have also been looking at this very problem for years and have given up on one existing.
-Edward