Some situations? As in some platforms that don't carry TH because of a
dependence on some ghci code?
TH and ghci both rely on a bytecode Haskell interpreter which maintains its own linker and some other infrastructure; *that* is the fundamental reason why both ghci and TH are not available on some platforms.
We try to keep the dependencies for xmonad-contrib to some sort of minimum and bump anything else to xmonad-extras. I'm not sure this is a scalable answer (once we get enough things in -extras that it starts sprouting bizarre dependencies out all corners) but pulling it all back into -contrib isn't the answer.
--