Какая разница? Пока For не выполнится, Next не знает, что там MaxIdx.
Простейший пример:
Private Sub Form_Click()
Dim i As Long, d As Long
d = 8
GoTo Label
For i = 0 To d
Label:
Next i
Caption = i
End Sub
На выходе получает "1". То есть один раз выполнилось "i=i+1", и далее выход по Next.
Поменяй "For i = -5 To d" - всё равно на выходе "1", то есть цикл работал, но до нуля, то, что там d=8, Next не знал.
Значит в IDE и P-Code переменная конца цикла равна "0" до того, как выполнился For.
Но в нативном коде Next не знает даже адреса перехода в начало, цикл не зацикливается, а зависает на перехода по неизвестному (возможно, случайному) адресу после Next.