I have not had as much opportunity as I would like to play with Roo, and I will admit that it has evolved quite a bit since I last played with it
I typically work on large enterprise applications where Roo is not something many of the developers use or are comfortable with. Therefore when I check my source into subversion and another developer grabs it that does not use Roo it would cause confusion or issues. I had tried removing the Roo nature and adding it back it and it really did not seem to work very well. Have you had to address this issue before? Is it possible now for me to check in a project and have it be transparent to other developers that I was using Roo and conversely check out a project that was not created with Roo and still benefit from what Roo has to offer?
I have not really had the need to do this either. I know it is do-able, and you'd basically remove the annotations, comment out the annotations dependency, and push everything in if you want to remove AspectJ from your project.
If you do all of that, when you want to put it back on again, you may end up having to not roo-ize the existing artifacts or you will have a mess on your hands. Maybe you just add those additional entities or services, and keep the rest in Spring.
As Roo is compile-time and not run-time, it should not pose a performance problem to leave it there, but not use the Roo shell again.
The only downside is that Roo tends to want to screw up your web config and get it back to what it thinks you want when you re-add it. For example, I removed Tiles from my configuration to use SiteMesh on a project, get rid of JSPX, etc. But when I launched the Roo shell, it detected that we had controllers that were annotated and therefore it set up my project again. Good thing for git checkout, eh?
So, if you find anything quirky like this, I'd add a JIRA to get a request in to not manipulate those artifacts when attaching Roo to that project.
Long winded way of not answering the question, but that's my 2 cents.