Mailing patches is the same as squashing commits. The Linux kernel would be much harder to maintain without messy history being carefully distilled down to well crafted patches.
But mailing patches is a pain in the ass. VCSes should support squashing and rebasing.