It (almost) only will be if you use JavaScript Overlay Types on the
client side (you can then parse from JSON using JsonUtils, and
serialize to JSON using either –a bit hackish– new
JSONObject(myObj).toString() or your own toJSON method, concatenating
to a StringBuilder with the help of JsonUtils.escapeValue).
GWT-RPC brings you "integrity checks" (it'll fail if the server and
clients do not use the same version of the class; which can also be a
drawback) and you don't have to think about how you serialize/
deserialize your objects.
...and more importantly, GWT-RPC gives you an RPC approach, something
you'd have to do yourself if you use RequestBuilder (and want RPC).
Note that with GWT 2.1 comes RequestFactory, which uses JSON with
overlay types under the cover (you code against interfaces on the
client side, and GWT will generate overlay types that implement the
interfaces; on the server-side you code against concrete classes that
have the same getters/setters as the interfaces on the client-side –
but are not required to implement any interface or have any
annotation; and they can contain server-only code, contrary to GWT-
RPC–; and it's all JSON on the wire). But RequestFactory is quite
specialized to work with "entity objects"; it's not a generic RPC
service, unlike GWT-RPC.
If you're on a ReST mood, then neither GWT-RPC nor RequestFactory will
be good for you, and then I'd recommend using JSON as explained above
(I did it on a project, but "plugged" it under an RPC-like interface
for my client code, because actually RPC is much more natural from a
coding perspective)