Thanks for weighing in. It is possible to use cabal flags + CPP to work around this, although I don't like doing that for the reasons you would expect. I'm also not typically comfortable opening up an issue to ask a package maintainer to add a flag to enable conditional dependencies for instances. I believe that there is precedent for pulling data types that offer a good abstraction into base (ie, moving Data.Functor.* from transformers to base, moving Bifunctor into base), but I don't know exactly what threshold needs to be cleared to make a compelling argument for doing this.
-Andrew Martin