ListLike and mono-traversable both provide their own versions of Functor and Foldable (I don't think ListLike has Traversable, exactly, but it could). The problem is that data structures like ByteString and Text simply don't admit instances of these classes. In fact, that's exactly what mono-traversable is: a monomorphic variant of Traversable (and hence the others as well).
It's entirely possible to write something like
> someFunction :: (ListLike (f el) el, Foldable f) => f el -> a
and it may even be sensible, but it means you can't use e.g. Text as an argument to someFunction.
I don't believe mono-traversable provides
> instance Functor f => MonoFunctor (f a)
that instance is problematic because it overlaps with many other instances one could wish to write. However, there are instances for pretty much every type in base that makes sense, so you can pass any particular Functor to code that expects a MonoFunctor and it would work.
If you're concerned about getting stuck with a particular library, classy-prelude seems like exactly the wrong choice, as it makes a lot of this implicit rather than explicit, which means it would be harder to migrate away from if you choose to do so later. Besides, it uses mono-traversable under the hood anyway.
John L.