A simple example where the Fundep version still works, but not the single-parameter one, is a Set
container:
import qualified Data.Set as Set
instance (Ord e) => Collection (Set.Set e) e where
insert = Set.insert
member = flip Set.member
An instance to the other class doesn't work because you need an Ord
constraint. Now, you could change the definitions to
class Collection c where
insert :: Ord e => c e -> e -> c e
member :: Ord e => c e -> e -> Bool
But for simpler containers like lists that would merely be a nuisance, you'd like to also store non-ord types there. For Hashmaps you need yet another constraint. It's no good making those global and required for any collection.