Since *info* and *Help* buffers are never(?) marked as modified, I guess
it's actually save-buffers-kill-emacs (C-x C-c) that's holding you up, not
kill-buffer (C-x k). And that means it's buffer-offer-save that's at
fault, not kill-buffer-query-functions.
So maybe you just want to turn on buffer-offer-save for buffers you
explictly create, as with switch-to-buffer (C-x b), instead of buffers Emacs
creates for you:
(defadvice switch-to-buffer (after buffer-offer-save activate)
"Set `buffer-offer-save' when called interactively."
(and (interactive-p)
(setq buffer-offer-save t))) ; automatically local in all buffers