1) ajax4jsf is now part of Richfaces. not sure if you can download ajax4jsf without Richfaces...
2) Seam remoting is another option I've used in the past and seems to work pretty reliably.
see chapter 21 in Seam ref doc:
Seam provides a convenient method of remotely accessing components from a web page, using AJAX
development effort - your components only require simple annotating to become accessible via AJAX.
This doesn't really answer my question as to why I'm getting the error
I have done some digging since my post yesterday and in looking at the a4j toScript() method it looks like it only supports the standard Java objects (Arrays, Maps, Collections, etc...). I'm assuming that whatever Seam's getResultList() is returning it isn't in this list and so toScript() can't convert it and the exception is raised. If that is the case, then how are others exposing the internals of the Seam components via jsFunction? Or are they?