ジェネリックメソッド内で x.GetEnumerator() を呼び出す時、
(x as IEnumerable<>).GetEnumerator() という書き方とは別の方法で、コンパイラは x 自体のボックス化をせずに IEnumerable<>.GetEnumerator() を呼び出すということでしょうか?
その時の GetEnumerator() のシグニチャは IEnumerable<> での定義によると。