It's lazy. I've wrote test, that checked that such work with stream is lazy. I choose not to include this test in spark because this test not about the code, but about my knowledge of scala. 
In fact it's the SHORTEST way to write lazy iteration over all partitions.  "I'd rather have a subclass of Iterator that deals with the partitions separately." - I would not. Such code would do exactly what  stream does, but it would be a lot of my unprofessional code with bugs and bunch of unittests. Let's benefit from scala classes.