in my opinion this is a bug of ghc. maybe the implementation works exactly as it should, according to the specification: then it's a bug in the specification.
Show a => a -> a -> String
...is not monomorphic. If you want that to be inferred, turn off the monomorphism restriction. (And yes, many people *do* consider the monomorphism restriction of standard Haskell to be a bug in the specification.)