Every message in JMS queue or topic is treated as a separate thread. It works with threads basically.
When any service is dealing with JMS to put or pick message from JMS, it creates(to put) a connection or polls(to pick) a connection for every thread/message.
It would be connection pooling instead of session pooling.
I have just found below article:
Example of Flow Control Settings for Oracle JMS Adapter [http://docs.oracle.com/cd/E23549_01/doc.1111/e15731/adapter_tech.htm#CHDHFEEC]
So it means, Flow Control can be set for JMS Adapter.
and that mean SOA Suite JMS Adapter creates(or use a connection from the pool) a connection, it receives all the available JMS Messages from the JMS Queue in a single JMS Seesion thus flow control settings at JMS Connection Factory can be used for controling the inflow of JMS Messages.
I agree with your thread concept that every connection need a thread assigned but I was not expecting SOA JMS Adapter to create a connection for every single message in a JMS Queue.
I have done the POC(JMS Flow Control/Message Throttling) with OSB but I need to complete the POC for SOA Suite JMS Adapter.