The single data source is, in my opinion, the better option.
Having a single data source enables the app server to better manage the available connections to the database. With a multiple data sources, you would have to determine the connection allowances for each app and enable that many connections in the database. If one app was not using all of its connections but another was, and that second app needed more connections, they would not be available. With a single data source this would not occur.
If you are concerned about leaking connections, see http://wiki.jboss.org/wiki/CanJBossTellMeWhenIDontCloseAConnection
However, each app should be developed to assume its own data source - it is the administrator whoe deploys the apps who would hook them up to the same data source by mapping the name the apps use for the data source to the same JNDI name of the data source.