It looks like the CVS client built into ProjectBuilder insists on puking all over the deeply-nested file structure of a WebObjects project. Folders that are actually packages, etc...
In 3 separate cases, although PB insisted that all files were in fact committed to CVS, and up to date, only the .java files were uploaded to the server. Using the manual command-line CVS client, I was able to commit the whole shebang. Very unnerving. I'm going to revert to the command line client for the time being, and play around with Concurrent Versions Librarian (CVL), which is a gui-based CVS client for a bunch of platforms, including MacOSX. It looks like it needs a bit of tweaking to get it configured right, but I figure I'll be more likely to commit regularly (and properly) if I don't have to keep looking up commands and codes for cvs and vi.