Видимо, сперва происходит приращение, затем формальный прогон вычислений внутри цикла, в конце тела - заход на новый виток проверка условия с новым значением счетчика.
Если условие выполняется, то происходит реальное выполнение (применение) уже формально выполненных вычислений тела цикла.
Если условие не выполняется, реальный результат последних вычислений НЕ принимается и происходит останов.
Но трейс-то уже произошел. Либо для примера автора - функция обработки на кнопку уже назначилась.
Трейс или назначение функции на событие, видимо, не считается вычислением и под отмену не подпадает, будучи уже свершившейся операцией.
Как происходит на деле - не знаю, вышеописанное - это я так понял. Программисты все правильно объяснят.
Автору - при использовании ссылки на функцию - тогда все в порядке:

Код AS1/AS2:
for (i=0; i<5; ++i) {
butt.num = i;
butt.onRollOver = btnOver;
}
function btnOver() {
trace(this.num);
}