I've known about this behaviour for a long time. I think it's because while (EXPR) { } is treated as if it were for (;EXPR;) { }. And for (;;) { } is, just as in C, an infinite loop.
Note that Deparse turns both while () {} and for (;;) {} into while (1) {}.