I'm just facing the same problem. The SOAPRequestHandler seems to only init the contexts, but doesn't start any transactions. In case of JSF requests, its the SeamPhaseListener that handles transactions as well.
In the seam reference it's advised to put the WS functionality in a Seam component, so that injections and other stuff work (the WS class is instantiated by the WS framework, so Seam cannot interfere, I guess).
So if you have a Seam component that does the actual stuff (and the WS stuff just delegates), then you can annotate each method of that component as @Transactional(REQUIRED). Quite inconvenient I think.
Maybe I'll subclass the soap request handler to add automatic transaction handling there, if i don't find a more neat solution.