I'm using Seam 2.0.2 SP1 btw
the problem is that ui:include is evaluated when the JSF tree is built, but rich:dataTable is evaluated at rendering.
Check out build-time-vs-render-time
for a more thorough explanation. Look at the bottom of that page for a link to another good explanation.
You could maybe try a4j:include instead, but I am not sure if it is any different.
Yes, that was the problem - so I've had to replace the rich:dataTable with a c:forEach for now (and done all the pretty styling manually). a4j:include acts in the same way as ui:include (at least for the version I'm using).
So, problem solved - kind of. I'm still looking for a cleaner way of doing this at render time so that I can use a dataTable for all the formatting and paging etc.