> Why would you make it depend on template haskell rather than the other way around?

No particular reason, I'd be fine putting the instance in template-haskell instead if that's more palatable.