In my opinion the assumption that the threads are not being pooled is wrong, assuming that IPF is used in a Camel context. Camel itself uses thread pools (executor service) by default. And many of the endpoint/component implementations use thread pools (everything Jetty based, everything Netty based, AMQ, etc.). Moving from thread-locals to pooled objects makes it a lot harder to reason about the maximum degree of parallelism because both the size of the object and thread pools has to be known and should be in sync.
I have the feeling that we are trying to pro-actively solve a performance problem for downstream projects that might not even be one. But we add the complexity of managing pool sizes.
Looking at where the pool is used in the 3.5 branch:
WS Client Instances
As far as I know pretty much all cost incurred here is by retrieving the service WSDL and the Schema and the verification of whether the Java stubs comply to the contract before returning an instance of client. However, CXF does cache the expensive objects internally (with varying degrees of success, depending on the exact version of CXF). E.g. it retrieves and parses a (remote) WSDL and schema for a given endpoint only once, then re-uses the cached versions. What's left is the actual HTTP connection for each individual client instance. That again is wrapped in the logic to create the respective WS Camel endpoint. And Camel by default caches endpoints.
Personally I think that in most usage/load scenarios employing the pool does not improve/change performance in a significant way. But it makes reasoning about the different levels of caching more complicated.
Document Builder Instances
Honestly, I don't know how expensive it is to create document builder instances. But DOM parsing and management, including the GC overhead created by frequent DOM parsing, is several magnitudes more expensive compared to using SAX or StAX parsing. Both in terms of CPU and memory usage. If a downstream project had any performance issues in or around the IPF document parsing, then the pooled document builder instances probably won't have any significant impact on it. The problem comes with the concept and to fix it would mean to switch to StAX/SAX parsing.
In short, I would vote for removing the object pool again.
Greets,
Ralf