It also strikes me that given the impressive pace of his amazing work on Pugs, that maybe using a language with built in memory management; sensible & powerful built-in datatypes; coherent, cross-platform libraries; allows him to concentrate on the details of the task at hand rather than futzing with malloc()/free() et al
Functional languages are also known to be well adept for parsing, and since parsing perl is considered to be difficult at best and impossible at worst (except for perl of course) and I expect perl6 is better (but still difficult), that using Haskell was much easier than doing C/Parrot.
C maybe the only game in town for the level of cross-platform support required by Parrot (though I think that there is another contender for that also),
What is the "other contender" other than C? (Not that I don't believe you, just curious)
Even though generated sources can be a pain for humans to deal with, it might provide a starting point for a non-GHC dependant "native" build of the Perl6 compiler?
Personally I was wondering (after skiming some of the Haskell code) that maybe it could be bootstrapped as the parser and emit Parrot code, rather than try to fiddle with any generated C. Personally, I think a Haskell based perl6 compiler which emits Parrot code would be really really really cool.