This version relies on banks being required to make "funds available" in a timeframe that's often shorter than how long it takes a cheque to actually clear - so you can dig yourself into a hole before the cheque finally bounces.
The zelle version is essentially the same thing. Someone "accidentally" sends you a sum, and being a nice, reasonable person, you return it. The problem is this isn't a rollback; you don't (can't) revert their transaction - you create a second transaction.
So when the source of the original transaction turns out to be fraudulent - and as the parent post says, fraudulent can be reverted, the house always wins - that first transaction is reverted. The second, where you "returned" their overpayment, is an entirely distinct transaction and needs to be fought separately. And it's a much harder fight to win, because it doesn't involve the house winning.
(And yes, this could be almost entirely mitigated by having a user-facing return/revert/refund function that undoes the original transaction instead of creating a second.)