ああ、もし、sandbox使ってるんだったら、

$ ghc-pkg field '*' haddock-html
ではなく、
$ cabal sandbox hc-pkg field '*' haddock-html
を呼んでください。

あと、405の時点では「haddockがghc-pkgを内部で呼ぶ」と思ってたんだけど、実は「cabal が haddock に依存先パッケージのドキュメントの位置を渡す」ということがわかった。
cabal install に --verbose=3 を渡して、haddockに渡っているオプションを見て気づいた。
cabal の --package-db オプションの値が、haddockへ --read-interface オプションとして渡されるらしい(ただし、sandboxにいるときは cabal install に直接package-dbを指示しても無視されるみたい)。