Should jhc support Cabal? Or should use only yaml?
Arguably its the other way around, as you found in the Cabal source: jhc can use whatever it wants, while it would be nice if Cabal (and hence cabal-install) supported jhc.
Whether jhc uses Cabal internally is not relevant to whether cabal supports jhc: for example, cabal supports Hugs, which does not itself support (and can't support, given how it works) cabal.
--