Update: It turns out both CVS and SVN have a solution to this problem called vendor branches. This page has a great description of the technique with subversion!
Many open source projects require local file customizations to tweak, customize, and fix bugs when building a real world site (e.g. Drupal, OSCommerce, Roller, phpBB, etc…). My preference is always to checkout from their source control and start working rather than downloading an archive file and extracting it. The reason being that it’s convenient to use CVS to see what local files I’ve changed, generate patches, get updates on the checked out branch, etc… The problem is that you can no longer use CVS to manage your local changes unless you have commit access to the project.
The approach I use for these types of sites has been to use double source control by using both CVS and Subversion. For example say I’m launching a new Drupal based site. I checkout the source from CVS, I then check it into my local Subversion repository. Now I can SVN commit any changes I make to my local subversion repo, manage branches, etc… However, I can also use CVS to see what changes I’ve made locally, generate patches to send to the committers, and easily get updates on the branch.
I’ve never liked downloading and extracting zip files because you then have to keep a parallel pristine copy to do diffs against which is a major pain. Using double source control in my experience is perhaps less intuitive but much easier!