Long ago, Differential reviewers were moved from a dedicated table to the edge table. This now appears to have been a mistake.
Reviewers are significantly more complex than other edges. Reviewers are the only data type which uses edgedata, and we could remove this table and simplify the abstraction across all applications by moving reviewers back to a dedicated table.
Reviewers are complex enough to justify a runtime object (DifferentialReviewer) anyway, so we aren't meaningfully simplifying anything by using edges.
Technically, we do get slightly easier transaction rendering. But this is a tiny benefit in a vast gulf of costs and complexities.
A particularly nasty aspect of this is that a nontrivial amount of real transaction logic lives outside of the transaction editor. For example, DifferentialReviewersHeraldAction has logic to compare reviewer strength. It should not.
This isn't actively hemorrhaging or anything, it's just a fairly clear infrastructure defect.
Related: