I wonder if some of the Spring vs. JSF questions arise from terminology and the difference between the Spring Core Framework and Spring-MVC. The core framework is, IMHO, a great way to manage the model and data access layers. Spring-MVC is just one implementation choice for the view and control layers (others in this field include JSF and Struts).
So, "Spring" vs. JSF could (and probably usually does) mean core framework vs. JSF, which is not really a "vs." since they are completely complementary frameworks.
On the other hand it could mean Spring-MVC vs. JSF, which are pretty much "competing" technologies for the view and control layer. Whilst they "compete" in the view and control space they are based on different fundamental approaches - Spring-MVC on the request-response model familiar to HTTP applications (also used by Struts), and JSF on (as I understand - my JSF knowledge is currently minimal) an event model more akin to the Swing approach.
Sorry for stating the obvious for some people but those not too familiar with Spring may welcome the clarification.