Ответ: Глупый вопрос.
Как я уже написал, цикл For...Each неправильно применять для модификации итерируемого списка. Потому что вы не владеете механизмом итерирования он скрыт от вас. Хотите контроля - используйте простой For...Next.
Почему работает с двумя начальными элементами, а не работает с одним?
Вероятно алгоритм итерирования такой:
в строке For...Each берется первый элемент First и выдаётся в переменную, и тут же итератор переходит на следующий элемент. В случае если в списке 1 элемент то итератор указывает на элемент - конец списка. Добавление нового элемента происходит перед концом списка. Если два элемента, то итератор указывает на второй элемент. И новый элемент добавится после него. Что позволит снова перейти на него в следующей итерации.
В строке Next происходит сравнение итератора с концом списка, элементы совпали - цикл завершен.
__________________
|