For the time being - I still recommend default GWT RPC mechanism.
However, to get this working with Seam requires some tricks. In version 1 (and I think Seam itself still has this), I had an implementation of the GWT RPC servlet which would then load up the components via Seam - so it is possible to use what is already in Seam.
This works off the name of the GWT RPC interface name, so if it is called org.foo.Bar - then there must be a Seam managed component called "org.foo.Bar" that implements that interface.
However, I had troubles adapting to newer and newer versions of GWT RPC, so for the moment I simply have a Seam managed component that implements the RPC interface, and then I have a very simple servlet that extends the GWT RPC servlet, and also implements that fact - all it does is grab the Seam component, and then delegate any calls to it. not optimal, but simple, less moving parts.
I have been told its probably good practice to break up the API into multiple remote service APIs for different areas of functionality.
But overall the GWT RPC mechanism is simple and foolproof.