Where in the user interface? All the common commands act like they are working with diffs.
It amazes me that people keep repeating this (there's another thread of the same stuff here https://news.ycombinator.com/item?id=38896658#38897488 ). It's like "actually git commits are snapshots not diffs" is such a powerful meme that those who repeat it forget about their day-to-day experience of working with git, in which it tries as hard as possible to hide the snapshots, and let you work with diffs.
The onion really has three layers:
2) In the user interface, all common commands work as if commits store a reference to a parent commit and a diff.
1) Commits actually store a reference to a tree (snapshot) and a parent commit; diffs are generated on-demand.
0) Trees (snapshots) may actually be stored in different ways, where "smallest/fastest/simplest way to create new file from old file" makes sense.
Most people live comfortably on layer two. Occasionally you might need to know about layer 1 to do something weird, and layer 0 is only really for people interested in implementation details.