As I understand it, Phabricator largely avoids the problem because it is primarily patch-based and not branch-based? How would arcanist handle a force-pushed branch without simply starting a new review process?
Exactly, it sidesteps the problem by decoupling branches and code review. A review request is just like a diff in a mailbox. It'd just update the diff.
It's really close to the Linux kernel development model and it scales very well.