Actually, I'd say the problem isn't that a transformer "cannot undo earlier action in a lower monad." I'd just say that most transformers happen to be implemented in this "forgetful" manner. It's conceivable that we could implement some of them differently, in a way that would obey the MonadPlus laws. Whether or not obedience to this particular law is worthwhile... well, that's debatable.