What about disallowing -hb on threaded builds? That does just sort of punt it a little bit, it a not quite satisfactory way perhapsĀ
But the non-threaded runtime isn't really a first class citizen, is it? ConsiderĀ http://hackage.haskell.org/package/base-4.8.2.0/docs/GHC-Event.html#v:getSystemEventManager which is Nothing on the non-threaded runtime. So you can't really just "run it unthreaded" to profile any program using that style of implementation. Even when you don't touch it directly, the program runs very differently.
As for hb, I'd probably cry least about losing -hb but they all serve different, and in my opinion, important needs.