Now after having tried this and that, I think I have understood the concept of the DataValueRenderers. Each table column gets a renderer, suitable to the column's data type. That's the reason why there is no "MissingValueRenderer", because a column with data type MissingValue wouldn't make that much sense ...
So each single renderer has to take care of the special case "MissingValue". Either it is handled in some special adapted way for this renderer, or it uses just the fallback MissingValue.toString(), which returns "?"
So, I derived a new Renderer from DataValueRenderer, which handles DoubleValues just like the standard double renderer, but gives the empty string for MissingValue: