Array.Sortメソッドも、ソート時の比較処理をIComparerで指定することが出来ます。 次のコードは、CurrentCultureとOrdinalでアラビア数字・漢数字・囲み文字を並べ替えたときの違いを出力する例です。

StringComparerを指定して丸囲み・括弧付きのアラビア数字・漢数字をソートする
using System;

class Sample {
  static void Main()
  {
    var numbers = new string[] {
      // 半角アラビア数字
      "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
      // 丸囲みアラビア数字
      "①", "②", "③", "④", "⑤", "⑥", "⑦", "⑧", "⑨", "⑩",
      // 括弧付きアラビア数字
      "⑴", "⑵", "⑶", "⑷", "⑸", "⑹", "⑺", "⑻", "⑼", "⑽",
      // 終止符付きアラビア数字
      "⒈", "⒉", "⒊", "⒋", "⒌", "⒍", "⒎", "⒏", "⒐", "⒑",
      // 漢数字
      "一", "二", "三", "四", "五", "六", "七", "八", "九", "十",
      // 丸囲み漢数字
      "㊀", "㊁", "㊂", "㊃", "㊄", "㊅", "㊆", "㊇", "㊈", "㊉",
      // 括弧付き漢数字
      "㈠", "㈡", "㈢", "㈣", "㈤", "㈥", "㈦", "㈧", "㈨", "㈩",
    };

    Console.WriteLine("StringComparer.CurrentCulture");

    Array.Sort(numbers, StringComparer.CurrentCulture);

    for (var i = 0; i < numbers.Length; i++) {
      Console.Write("{0} ", numbers[i]);

      if (i % 20 == 19)
        Console.WriteLine();
    }

    Console.WriteLine();

    Console.WriteLine("StringComparer.Ordinal");

    Array.Sort(numbers, StringComparer.Ordinal);

    for (var i = 0; i < numbers.Length; i++) {
      Console.Write("{0} ", numbers[i]);

      if (i % 20 == 19)
        Console.WriteLine();
    }

    Console.WriteLine();
  }
}
実行結果
StringComparer.CurrentCulture
1 ① ⑴ ⒈ 10 2 ② ⑵ ⒉ 3 ③ ⑶ ⒊ 4 ④ ⑷ ⒋ 5 ⑤ ⑸ 
⒌ 6 ⑥ ⑹ ⒍ 7 ⑦ ⑺ ⒎ 8 ⑧ ⑻ ⒏ 9 ⑨ ⑼ ⒐ ⑩ ⑽ ⒑ 
一 ㈠ ㊀ 九 ㈨ ㊈ 五 ㈤ ㊄ 三 ㈢ ㊂ 四 ㈣ ㊃ 七 ㈦ ㊆ 十 ㈩ 
㊉ 二 ㈡ ㊁ 八 ㈧ ㊇ 六 ㈥ ㊅ 
StringComparer.Ordinal
1 10 2 3 4 5 6 7 8 9 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ 
㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩ ㊀ ㊁ ㊂ ㊃ ㊄ ㊅ ㊆ ㊇ ㊈ ㊉ 
一 七 三 九 二 五 八 六 十 四 

CurrentCultureでは、アラビア数字は数字の大きさ、漢数字は漢字の読みに従って並べ替えられ、Ordinalではコードポイントに従って並べ替えられていることが分かると思います。