The IS A/HAS A relation is a bad metaphor here. A better intuition would be "ASSOCIATES WITH" or "SPECIALIZES (some type) TO". In practice it means that when you resolve a type
f :: GMapKey k => k -> GMap k v -> v
both the first and second parameters are polymorphic but must unify together. It's not necessary that one is contained within the other.
To decide which "direction" to use you have to think about how things generalize. If you define a class of "containers" which associated types for the "key" then you're saying that each container type "instantiates this class interface" on a single key. This is a many-to-one relationship since each "container" has a single associated "key" but "keys" can be the associated types for many containers. If you go the other way, you're stating that each "key" restricts to a specific kind of "container", but containers might have many different keys which can index them.