1 - Spring is a complete JEE framework. With Spring, you can make something only possible using a JEE Environment. Also, spring fits well with other frameworks, like Struts 2, JSF, Hibernate, JPA and so on. The Spring core is its IoC module. Nowadays if you're building a software, you should thing about Unit Testing and consequently you should thing about decoupling. IoC (or simply DI) helps you to Decoupling your objects. Spring IoC module makes it for us.
2 - Spring has a Transaction module. Using that module with Hibernate you won't care about Transaction begin/commit/rollback operation. It helps a lot.
3 - I won't compare them. Although they have similar modules, I still prefer EJB for Enterprise Application (with thousands of users). However, you must use a JEE Server to work with EJB3, as long as you can use a simple Tomcat or Jetty with Spring. In my opinion: Use Spring for medium application and EJB3 for large applications (and what about small one? well, use Ruby on Rails )