É o seguinte,
com as duas opções vc consegue fazer o pool normalmente, o que difere
é se vc tem mais de uma aplicação utilizando esse pool.
Exemplo: Caso vc tenha 2 ou mais aplicações utilizando uma mesma base
de dados, ai é melhor vc criar o pool no container, pois vc publica
via jndi e qualquer uma das aplicações irá utilizar o mesmo pool. É
melhor assim pois você já configura seu pool de conexões de acordo com
o servidor que você tem, com relação a quantidade de conexões e tal.
Agora, se for somente uma aplicação que irá acessar a base, é
indiferente. Fazer o pool utilizando frameworks ou através do
container.
Eu faria no próprio hibernate mesmo (seja arquivo de hibernate ou
spring ou o q seja).
Você mencionou
"Venho pesquisando na internet qual é a melhor opção para pool de
conexão
para aplicações web/jsf, a do próprio container ou framework terceiros
como
o c3p0."
Você pode utilizar o c3po,dbcp ou outros ... no seu container ou na
sua aplicação. uma coisa não anula a outra.
Outra coisa, nada impede de você através de uma aplicação publicar um
pool de conexões via jndi e outras aplicações utilizarem, mais nesse
caso seria bem melhor vc fazer no container, pois fica toda
configuração de banco centralizada no container.