Because tab-mark, tabs, trailing, etc ... work via faces, could the requirement for faces declaration be removed from whitespace-style?
In summary, from
(setq whitespace-style '(face tab-mark tabs trailing))
to
(setq whitespace-style '(tab-mark tabs trailing))