If the ~/.emacs file have:
(setq initial-frame-alist (append '((background-color "DarkSlateGray"))
initial-frame-alist))
(setq default-frame-alist (append '((background-color "DarkSlateGray"))
default-frame-alist))
(require 'printing) ; or (require 'ps-print)
then ps-print is loaded before initial-frame-alist has any effect, so,
ps-default-bg is set to white.
Yes, that is the cause. There is no way it can examine a frame
parameter before there is a frame. So your other approach would seem
to be needed.