Grails' plugins are a good packaging mechanism for code/design/schema reusability across apps, or for clarifying code ownership across multiple authors (which seems likely for a large app), but I don't think they'll save you much in terms of deployment pain - after all, the code is still there in the app, and the app still has to configure the plugins, etc.
Yes, you'll save a little time due to caching of the plugin on the deployment target, but you'll pay that back with extra complications in code, test and in managing the versioning of the plugins themselves.
That said, I do think putting a domain+services plugin is a good module for reuse - we've just done that - but it more hurt than helped with deployment problems.
IMO, a 'best practice' for a big Grails app would be to think about splitting the app into smaller apps with communication either through the database or a memcache or via some form of messaging - lots cleaner for "don't have to redeploy the whole thing" and tends towards better scalability. Use plugins in each app where you want code/design reuse or schema isolation and are going to get enough reuse to justify the various overheads.