Like many things in object-oriented programming, it all goes back to ALGOL. Tony Hoare just called it his "billion-dollar mistake." If anything, that's an understatement.
Here is a really interesting thesis on how to make nullability not the default in Java. The parallels to C# are obvious.