> What do you mean by "default foreground" here?

I mean: The foreground of the face called 'default. That's what emacs picks the attribute from if none is matched.
It seems that the intention of allowing face A to specify an attribute as nil is to /clear/ the inherited attribute (so that emacs can fall back upon the default for that attribute). Unfortunately, nil seems to become 'unspecified at the moment, which => inherit the attribute.