Comprehensions are just plain faster, especially if you perform say filter and map at the same time.
That and a lambda implementation that only a mother could love, lack of tail call optimization etc.
What bothers me about comprehensions is they come with a separate set of rules, like LOOP in Common Lisp or templates in C++; but I'm pretty sure the restrictions are part of what makes them fast.