Just few years ago, opensource application servers were only an interesting alternative to the commercial products. The commercial products were easier to administer and maintain. Especially the graphical administration capabilities, good documentation, reference manual and easier installation were the differentiation points. In the early days of the opensource appservers the documentation wasn't sufficient. Although e.g. JBoss 2/3 functional capabilities were somehow comparable with commercial ones - there was a huge quality difference.
However the landscape changed very much. Nowadays the JBoss documentation and knowlege base is really extensive. For the glassfish application server the online documentation is already available from the graphical admin console. It can be downloaded as PDF as well. Even the command line tool is documented (just start asadmin and type in "help"). The Geronimo appserver comes also with good documentation and graphical administration console.
The monitoring capabilities of opensource appservers are also are remarkable. JBoss and Glassfish provide runtime statistics - glassfish even call flow - a sequence chart comparable visualization of EJBs / Servlets. The opensource appservers are even able to outperform the commercial ones (e.g. Glassfish won shortly a performance and scalability benchmark).
An interesting aspect is the installation. The installation of JBoss is really simple - just extract and start. Glassfish needs the execution of an ant-task after the extraction - but it is still fast (less than 3 minutes). The installation of commercial appservers is not always so simple. Sometimes a bunch of DVDs is needed :-).
In my opinion the quality (not amount) of documentation as well as usability decreased in the commercial space significantly. Commercial application servers often come with overbloated and often unneeded features. Although they still have a nice looking graphical UI - it is not always better usable and more intuitive than e.g. a Glassfish or Geronimo one. Ofter the "philosophy" of a particular vendor has to be understood first. Try e.g. to setup a JMS Queue with Glassfish, Geronimo, JBoss and then with one of the commercial ones. Compare the needed mouse clicks afterwards :-). Documentation of the commercial appservers comes with more "Hello World" examples, but in general it is not very helpful in more serious problems and sophisticiated applications. Problems in opensource space can be often solved indirectly - e.g. most of the developers of the commercial appservers blog about they work and participate in forums.
The decision to a commercial appserver is often the quality of commercial support. However, my impression here, the commercial support often operates in "Inversion Of Control" mode. So you have first to provide the isolated sample app with reproduction code, unit tests and even documentation, before the support actually kicks in. It can take even weeks, until a problem is recognized (not solved!) as such.
Commercial support for OpenSource products is available as well. However the chances are much higher, that you will get a high skilled engineer (if not the committer), and not only someone from a offshore call center. Most of the problems can be even solved using the internet resources. E.g. I sent last week a problem description (without isolated reproduction code) for TopLink Essentials case to the mailing list and got a feedback in few hours. However the quality of the feedback is highly dependent on the question - answer like RTFM is possible as well. The feedback of a commercial support is more honest in general :-).
It seems like opensource application servers are the best choice for "mainstream" Java EE 5 applications. However, we (the developers), can only in few cases make such decisions -> the reason is: we do not like to play golf and so influence the golf-course decisions :-)
NEW: Online Workhop Effective WebApps without Frameworks is also coming to: MUC Airport.