Ini adalah masalah optimasi konsumsi memori dan optimasi perbandingan string. Setiap kali Anda menggunakan string kosong di aplikasi Anda, Anda mengalokasikan objek string yang berisi 0 karakter. Adapun perbandingan string dapat dilakukan dengan membandingkan referensi (pointer) daripada karakter dengan karakter, yang lebih cepat bahkan untuk string kosong.
Jika Anda menggunakan berkali-kali string yang sama dalam aplikasi Anda, Anda dapat menggunakan mekanisme yang sama dengan memanggil String.Intern () dengan string Anda. Tetapi jika Anda menggunakan setiap string hanya sekali, maka Anda hanya akan menggunakan lebih banyak memori.
Jadi String.Empty hanya optimasi kasus khusus yang layak dilakukan untuk sebagian besar aplikasi Net, itu sebabnya itu terintegrasi dalam BCL.
Untuk detail lebih lanjut tentang hal ini saya sangat merekomendasikan membaca posting blog Eric Lippert .
Anda juga harus melihat dokumentasi ini yang dirujuk oleh posting blog-nya.