Beats me :-)

My guess is that in 2nd case Oracle evaluates the WHERE clause at once having always the equality right, while in the 1st case WHILE has different behavior.

How about if you explain that?