В статье MSDN на String Basics показано следующее:
string str = "hello";
string nullStr = null;
string emptyStr = "";
string tempStr = str + nullStr; // tempStr = "hello"
bool b = (emptyStr == nullStr);// b = false;
string newStr = emptyStr + nullStr; // creates a new empty string
int len = nullStr.Length; // throws NullReferenceException
Почему не конкатенация с пустым нулевым исключением? Сделать жизнь программиста проще, так что им не нужно проверять значение null перед конкатенацией?