Many instances for MonadError have Error constraints that are completely unused. In particular, the MonadError instance for Either does not use its Error constraint. This does nothing except restrict generality.
I recall that we removed the Error constraint from the Monad for Either a.
We apparently didn't remove this constraint at that time.