>>109
Integer[] i={1,2,3,4};
Object[] a=i;
for(Object e:a) System.err.println(e);

配列ではこれが可能なのでjvm仕様のレベルというのは考えすぎじゃないですか?
<E>とかE[]はあくまでもジャバ言語レベルの静的解決の問題でしたし、配列ではキャストが仕様で認められているので、generics型の実行時型情報取得<E>.classが出来たとしてもご心配のような問題は多分生じないと思います。
実際、クラス・インターフェイスをベースとしたライブラリでも、Iterator<E>はともかくListIterator<E>を使ってる人はかなり少ないんじゃないですかね。
もちろんIteratorのような抽象クラス・ベースのメリットはありますが、[]も結構多くのメリットがあります。
ラムダやパラレルでも[]もサポートしてくれるとさらにいいんですけど、次期リリースではどうなんでしょう。