The reason for the WHILE LOOP is because with CURSOR it is much slower than with WHILE LOOP.
Who said CURSOR is slower than WHILE loops? Didn't you asked them reason for the same?
While working with cursors, there are lot of options you can set to make them more performant, check the comments above by @jeff.
Also check this blog post where I've shown CURSORS giving good performance than WHILE LOOPS: http://sqlwithmanoj.wordpress.com/2011/02/07/avoid-cursors-or-use-them-optimally/[/url]