Это зависит от контекста. Часто вы оставляете строку нулевой, если вы просто собираетесь присвоить ей. Если вы используете его в контексте, где вы собираетесь выполнить над ним дополнительные действия, которые потерпят неудачу, если ссылка была нулевой и не хотите проверять, является ли она пустой вначале, тогда пустая строка может быть лучше. Я часто делаю это, если получаю строковый параметр и хочу что-то извлечь из него.
public string Foo( string bar )
{
bar = bar ?? string.Empty;
return bar.ToLower();
}
С другой стороны, если пустая строка будет допустимым значением и вам нужно будет отличить недопустимое действие от пустой строки как допустимого значения, то вы можете оставить его пустым.
public string Foo( string bar )
{
return bar == null ? null : bar.ToLower();
}