As someone who has worked many years in a somewhat distributed environment this article rings true for me. Especially the bit about synchronous vs. asynchronous communication.
Where distributed gets one of its biggest advantages is how it modifies what forms of communication are most convenient. Specifically, in distributed synchronous communication is less convenient than asynchronous communication . In colocated, the most convenient form of communication is usually to interrupt your teammate when you have a question. In the process you may have interrupted your teammate out of deep thought, and the subsequent conversation is ephemeral. In distributed, you would leave a comment on a pull request, comment on a ticket, or send a message in the team chat. In all cases anyone on the team could help you, the conversation is recorded, and in no cases is someone forced to be interrupted out of deep thought. That distributed makes better and more open communication more convenient in this way is absolutely invaluable. And this leads to better collaboration.
I think people tend to regard synchronous communication as inherently better. It certainly has its place but for many work situations (coding especially), asynchronous means are superior and distributed development forces you into that mode.