If you can successfully get unblocked async over slack/email/whatever, there isn't a need a for standups. That just means you have a functioning line of communication for your team.
Stand ups should solve the problem of "I need to get unblocked and I can't get my teams attention effectively". If async "standups" solve that, great. But it's not a one size fits all solution, and imo, shouldn't even be called a standup.
>But for the life of me, what I can't figure out is why some teams have good ones, and some don't.
IME it's the level of interaction of product/management/scrum-masters that make the difference. Good standups consist of just engineer focused updates/requests. Bad ones are progress reports and have participation of anyone not actively contributing to the sprint.