iirc it has because there was a test case about not hydrating null values. Someone added it. Furthermore, if you typehint your setter like this:

public function setFoo(Foo $foo);

It won't work, people need to write Foo $foo = null.

Don't know if we should allow null ?