There's no reason you need to copy the .git directory. Just set
:copy_exclude to %w(.git) and it should ignore that directory.
As for why it's implemented the way it is: it's for compatibility with
other SCM's. Git is not the only SCM capistrano supports, so the
built-in deployment strategies have to support the "lowest common
denominator". By all means, though, implement your idea and release it
as a git-specific deployment strategy. If it's useful to you, I'm sure
it'd be useful to others.
- Jamis