Laks,
There really isn't a clear-cut answer to the questions you are posing. Ultimately, a lot of it comes down to personal taste.
I find that using a commercial/open source Java EE 5 application server like JBoss, GlassFish or WebLogic with EJB 3 is a lot easier in terms of a learning curve and configuration (perhaps also using Seam). The customers who choose Tomcat (perhaps with Spring) often have a very strong open source bend, create their own frameworks/APIs, want flexibilty and create their own solution stack (perhaps with iBATIS, Quartz, Spring
JDBC, AspectJ etc). I also have customers that integrate EJB 3 with Spring on a full-scale Java EE application server where they need Spring features while leveraging container features/simpler application configuration. As mentioned, it is also possible to use EJB 3 with Tomcat utilizing OpenEJB (this is also surprisingly popular).
Hope it helps,
Reza