You missed a major benefit that EJB 3.0 has over a Spring based solution.
Bascially, the 3.0 containers have to support the 2.0 beans as well. This will complicate the container, and make them larger by having to be backward compatible, but it also means that an EJB 2.0 project can incrementally start using the EJB 3.0 beans, without having to replumb everything else.
Now you can certainly embed Spring into an existing solution, but then you have to basically maintain both configurations as you move forward.
With 3.0, your old code should pretty much remain untouched, yet still easily be able to reference new code through JNDI et al.
So, on top of the vendor independence, you get the backward compatability as well.