VB.NETではSystem名前空間をインポートすればどちらもStringという表記になり組み込み型のStringStringクラスとの区別が曖昧になります。

一方C#では、同じ文字列型でも組み込み型を表すstringとSystem.Stringを表すStringの両方の表記を混在させることができます。

既に説明したようにstringStringのどちらを使っても同じですが、C#では一般に、変数や引数、メンバなどの宣言ではstringを使い、静的メソッドを呼び出す場合などにはStringを使う、という使い分けをすることが多いようです。

逆に、次のような使い分けをすることもできます。 表記が異なるだけで上記のコードと以下のコードは全く等価です。

あまり見られないstringとStringの使い分け
using System;

class Sample {
  static void Main()
  {
    // 変数の宣言ではStringを使う
    String s1 = "foo";
    String s2 = "bar";

    // 静的メソッドの呼び出しではstringを使う
    bool b1 = string.Equals(s1, s2);

    Console.WriteLine(b1);
  }
}

当然、stringStringのどちらかだけに統一することもできますが、ガイドラインやコーディング規約などで定められている場合は、それに合わせて統一することが推奨されます。