Aha! Type families imply `MonoLocalBinds`. So the `s` variables aren't polymorphic enough without an explicit signature and everything goes pear shaped.

The relevant manual section is <http://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#mono-local-binds>.