As you mentioned, ERC777 has send/receive hooks. These hooks allow for a number of neat features, however they open the door for [reentrancy attacks](https://quantstamp.com/blog/what-is-a-re-entrancy-attack). This is the same type of attack that drained [the DAO](https://medium.com/@zhongqiangc/smart-contract-reentrancy-thedao-f2da1d25180c) (using ETH). I believe the reason ERC777 is not widely used is because some smart contract developers do not defend against token reentrancy. Most contracts are created with the assumption that tokens cannot be reentrant, and ERC777 breaks this assumption.