немного не понятно, в каких именно случаях мы будем иметь дело со статическим...

немного не понятно, в каких именно случаях мы будем иметь дело со статическим итератором? 

ну, в не статической реализации (именно данной реализации, без конструктора и без принятия на его вход какого-либо массива извне) мы привязаны к родительскому классу и его полю с массивом данных. от привязки к данным можно уйти, сделав конструктор, принимающий данные извне, но самое серьезное - это то, что для создания экземпляра inner-класса нам сначала надо создать экземпляр родительского. это лишний код и занятое место в памяти.

статический класс, как и методы, позволяет обойтись без создания экземпляра родительского класса. поэтому, если нам нужно создавать итераторы для различных внешних данных, не привязанных к родительскому классу, то статик будет предпочтительнее.

если что, пусть менторы поправят.