Currently, it is not possible to crop a surface to an arbitrary region (or even an arbitrary box) except by omitting the patches that leave the region, which produces jagged edges; see this post for an illustration.
However, it should be possible to produce more refined edges by recursively splitting those patches that lie along the border, as in the gallery example splitpatch.asy. As proof-of-concept, I have used this cropping technique to produce nice-looking pictures here, here, and here.
If you're interested, I'd be happy to contribute a module for this, but it won't be ready immediately and it will be written without an insider's understanding of what processes in Asymptote are more efficient than others. If you'd like to use my code as a starting place, the current version is at http://math.uchicago.edu/~cstaats/crop3D.asy.
Yes, let's collaborate on this over the summer. I will have two students working
on related projects.