I agree that the JTA spec leaves a lot to be desired, and I wish they'd made this case clearer. The reply in GERONIMO-594, however, is mistaken: section 3.3 in no way implies that the tx can't (or shouldn't) be disassociated from the thread - all it says is that you can't assume that it's the current thread you need to disassociate the tx from (i.e. you need to look up which thread to disassociate from).
Regarding Transaction.commit() calling, well, my code is the equivalent of the application server - if I'm not the inteded user of it then who is? And besides, it doesn't change the fact that somebody is the intended user but that somebody effectively cannot use Transaction.commit() or Transaction.rollback(), ever.
Ok, I'll check out the forum.