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))