Are those faces really needed? Is it not enough with just the
font-lock-* faces we already have?
They are not needed but might be desirable for users that want to highlight those parts of the code that do not have a font-lock* face to them.
Would it be better to define them as font-lock faces instead?
If the answer is that we do need them, should they really be marked
private? I thought the point of a face was allowing users and themes to
customize them.
You are right, those should not be private.
--