Both git and hg supports shallow (low history) and sparse (selective files) checkouts as well, facebook has a blog post somewhere about how they built it into hg.
It's still not the same as perforce's mappings. Even with shallow repos, git will force you to download the entire world each time you pull or fetch.
That's not really the entire world though, because the history before the shallow clone will not be pulled or fetched. You'll get all the new stuff though.
I don't think the scale of these places are fully appreciated. Your local enlistment could be a few hundred gigabytes and that is only the head revision of stuff you work with daily. Keeping more than just the current revision around is a lot of data for even a beefy workstation.