Does is matter that the DirectionalLight is not actually a directional light?
Here's a screenshot of a directional light lighting one face of a cube

Here's the fiddle that's from: https://jsfiddle.net/greggman/ae2yc7uj/
It's clearly not a directional light. If it was a directional light it would be a solid color but you can clearly see it's not a solid color. In order to produce the affect seen in the screenshot a position is needed. A direction light (in computer graphic terms) has no position so it's impossible to render different lighting across a flat surface.
Is this a bug? Should the docs change to say a direction light is not actually a directional light?
I see the issue is that it's a specular highlight but it's not a directional specular highlight it's a point specular highlight. Is that the intent?
The DirectionalLightis modeled as a point source that is very far away, so the rays are essentially parallel -- like the sun.
The sun registers a hot spot on smooth surfaces, right?
@greggman I'm with you on this one: parallel rays do not produce a hot spot on a flat surface. The current behavior is physically inaccurate. I've noticed the same thing myself when placing a directional light over a plane.

Physics means: go out in the real world and look at flat surfaces in direct sunlight. How many hot spots are as distinctly visible as the image above? The current behavior is exaggerated compared to reality.
@paulmasson Some materials will show a very strong hotspot under direct sunlight in the real world - for example, a shiny skyscraper like this one:

You can model both extremes easily if you switch to MeshStandardMaterial and play around with roughness:
roughness: 1
https://jsfiddle.net/ae2yc7uj/33/

roughness: 0
https://jsfiddle.net/ae2yc7uj/34/

@looeee now I see what you mean. I hadn't thought about interpolating between mirrors and dull surfaces. Very interesting!
I still think there is a question of whether the default behavior is exaggerated. Either that or the directional light documentation might include some of this discussion.
@WestLangley's explanation works for me.
Most helpful comment