If you're doing in-database diffs, however, a join-based approach will likely outperform data-diff though.
Ideally databases would have support a standard MERKLE TREE INDEX so we could get extremely fast comparisons.
An RDBMS could implement something like the rsync algorithm, or history tables, etc., to speed up a FULL OUTER JOIN.
The point is that FULL OUTER JOIN is the SQL table source "diff" primitive. Thus it seems natural to use that and let the RDBMS optimize it.