You are right about log correlation - should not work when the agent is inactive. Just did a PR for that.
The log snippet you provided seems reasonable right after setting active to false, as the already created transactions and spans need to be ended and cleaned. However, for onMessage and receive we do create transactions when active==false. Those are noop transactions and we don't really do anything with them, but they are causing DEBUG logging, so I can see how this is misleading. I added it as a task to treat that when applying the JMS tracing enhancements.
Regarding the "detachment" - I understand you expect different things when setting active=false but we didn't hear so far that having idle thread alive is a problem. For me, detaching is something else- it means REALLY behave the same as if agent was not installed. This means removing the bytecode we injected to classes in the first place. We have that in mind as something we want to address at some point, and once we get to that, it will probably include the stuff that happens in co.elastic.apm.agent.impl.ElasticApmTracer#stop.