おそらくyieldで記述と実行の順序が見た目と異なる事を言ってるんだろうけど

明示的なインターフェイスの実装は最初のレスでも有るように(IEnumerable)collectionの時に呼ばれるだけであって
結局はIEnumerator<T> GetEnumerator()へのラッパーだし、IEnumeratorに入れようがインターフェイスは全て仮想呼び出しだし
もはやジェネリックがどうとか関係ないな