Let me add a bug report to the custom faces debate.
Being perverse, I like my shell buffers to look different from all my
other buffers. So I do something like this:
(add-hook
'shell-mode-hook
(lambda ()
(set-face-background 'default "midnightblue" (current-buffer))))
If I start a shell, then change fonts by doing Options->Size->14, my
font sizes do indeed change, but my background color customization is
gone. Subsequently started shell buffers are back to midnightblue.