There's one significant advantage (from the reader's point of view) to while (1):
There are minor advantages (from the reader's point of view) to for (;;):
-
for (;;) has no expression to read, while while (1) does. (Note the addition of loop { ... } in Perl 6.)
-
"(;;)" can be read as "ever". "For ever" sounds better than "while one", "while true" or "while ever" (and requires no mental backtracking). "While not done" would be a great reading, but translating "1" to "not done" is a stretch.
-
for (;;) is visually distinctive from naturally ending loops.
Update: hum... while (!0) could be read as "while not done"...