If you are curious why there's such a large time difference, just look at the code. Take advantage of having the source code for the core
Java classes!
Both the Iterator and for loop approach call get(index) and increment an index for iteration. The Iterator, however, involves the next() method call, the checkForComodification() method call, and a try-catch block (requires some stack setup, I believe).
That being said, there's much to be gained for code simplicity. And as Ilja said, using the for loop would cause a much bigger performance impact when you switched to LinkedList.