im do hast du einmal die werte x und y und einmal 'nur' z zur Verfügung.
Wenn du in der zweiten Variante die beiden Werte brauchst, dann mußt du
sie erst durch Division und Modulo bei jedem Durchgang berechnen.
Wenn du einfach 6566 mal etwas machen willst, dann ist die 2. Variante
übersichtlicher.
Wenn du 67 mal 98 mal etwas machen willst (also wenn x und y
aussagekräftige namen haben und man daraus sieht warum eine Schleife 67
mal, die andere 98 mal durchlaufen wird) dann ist die 1. Variante
übersichtlicher.
Wenn du die Optimierung eingeschaltet hast würd ich mir für beide
Codeschnipsel die selbe Übersetzung erwarten.