A new file created by root when root is running hg are going to be owned by root. You can use the sticky group bit to set the group, but you're stuck with root as the user.
You can probably put a hook in the repo's .hg/hgrc pretty easily. Something like:
[hooks]
post-pull = chown -R user:www-data .hg
You said there are some directories you want to exclude, but you can do that in a hook too.