Ничем не отличаются по поведению. Почему бы в первом сначала не увеличивать i на 1 а потом продолжать или начинать цикл? Это было бы полезной языковой конструкцией.
По вашему мнению, почему во многих языках программирования не предусмотрено такое?
Потому что в ЯП "С" ( и аналогичных по синтаксису ) никто не мешает вообще использовать любые конструкции для "последнего" оператора цикла
Например
for(n=12345;n;n/=10)arr[n%10]++;
Заполняет массив количеством цифр в числе
Для данного варианта цикла тоже будем придумывать дополнительный способ записи?
Потому, что в большинстве C-style языков (к коим относится Java) не существует полноценного цикла со счётчиком и на месте ++i может стоять абсолютно любое выражение. Фактически, for - лишь синтаксический сахар для while.
В Algol-style языках нормальный цикл со счётчиком существует и там в for задаются 3 выражения: начальное значение, конечное значение и шаг приращения переменной:
for i := 1 to 35 by 4 do
задаёт цикл от 1 до 35 с шагом 4
В Python цикла со счётчиком тоже нет - там for используется для исключительно для итерации по элементам коллекции. Но там есть генератор, выдающий последовательность значений с заданным шагом, который можно использовать для имитации цикла со счётчиком:
for i in range(1, 36, 4):
Потому что вы не понимаете последовательность интрукций в цикле
Цикл начинается ровно с того числа, которое указано в инициализации
Префиксный или постфиксный инкремент на это влиять не может