Syncing by merging changes and resolving possible conflicts is a much harder task. Theoretically git has all the right bits, including the pluggable diffing and merging. In practice, I haven't seen it seriously used in this capacity.
This is to say nothing about files you only want on one node but not on another (heavy stuff lives on server and laptop, but not mobile, etc.)
This is why special-case syncing tools that know how to sync semantically are indispensable.