Stop press!
It's not a hunchentoot issue. It's a SLIME/SWANK issue.
I've set things up so that hunchentoot, then my acceptors, and then my handlers are all loaded from my lisp implementation's init file.
The problem occurs immediately after start-up (M-x slime), regardless of whether my handler explicitly sets the output format or not, but if I then manually evaluate the handler (M-x slime-eval-last-expression) and reload the page in my browser the problem goes away.
Sorry for the noise.
Seb