Eu imagino que existem duas razões, uma para facilitar a leitura e duas para um pequeno aumento no desempenho.
Legibilidade é fácil: é muito mais rápido de detectar string.Emptydo que "". Procurar string.Emptytambém geralmente será mais fácil e talvez mais preciso do que procurar o literal. Também esclarece a intenção: você não apenas cometeu um erro de digitação ou esqueceu de terminar alguma coisa, realmente queria uma string vazia.
O motivo do desempenho é devido à internação . Veja, o tempo de execução mantém uma tabela de sequências usadas anteriormente, para que ele possa fazer comparações de seqüências rapidamente sem realmente fazer uma verificação caractere por caractere. string.Emptyjá é uma referência interna para ""onde digitar o literal pode não fornecer a versão internada, causando um pequeno impacto no desempenho.
""mas nãostring.Empty