ERC20 has huge adoption in the ecosystem (wallets, blockchain explorers, exchanges etc) and is pretty simple.
ERC777 is more advanced and more complex and hasn’t had the same level of ecosystem adoption (yet). Hooks are powerful but with that you need to deal with reentrancy.
The ability to send tokens to a contract is a lot more user friendly than requiring two transactions.
I suspect that projects are still using ERC20 due to it’s simplicity and a large number of existing projects that have used it. There isn’t a light weight standard for approve and call. (Though there is discussion to Add ERC20 permit() function). This means the options are either ERC20 or ERC777 (or even ERC1155).
This is a wiki post, please edit/update