Co-located work is synchronous programming.

Remote work is asynchronous programming.

The great part of co-located work is that so much communication happens organically. If you need something, or have a question, the answer is a desk or two away. Processes can be ad-hoc and decided in the hallway or around the water cooler.

At the same time, that organic nature turns on a company once it gets bigger. The organic transfer of information takes time. In small organizations or teams that time is small, but as the organization or team grows, the more repetition is needed to propagate the same information in the system. Where you used to answer a question once, it's now once a week.

The reason is because the ease of organic communication prevented the organization from writing down it's tribal information. It took too much effort! But as the organization grew, that slow organic information transfer simply could not propagate tribal knowledge fast enough or redundant enough like writing it down. Remote work is essentially permanent async work, but you are also temporarily async at 3am and your servers are down. I hope your coworkers wrote the production debug steps down, or you are relying on your own memory. It also affects your new hires because they will have to enculture themselves to the information and organization.

Remote-first policies see that, eventually, all companies require async access to it's tribal knowledge. That's READMEs, Wikis, tickets, helper programs, the accounting department, etc. Realizing that all corporations are eventually remote (if only because you will spread to another city, office, or different floors), you spend the extra energy to build those tools so you can look up your tribal information at 3am on a Saturday morning after drinking. Those Wikis really help, yo!

It also adds a tremendous amount of visibility and accountability into what you do. You have visible documentation and visible communication. Tickets are filed for bugs, and others in a completely different office can check the status. My drunk self can read the production FAQ at 4am before the hangover sets in. The best part is you can hire remote workers, because your entire process supports that asynchronous access to information.

In many ways these asynchronous processes add a tremendous amount of value to your business, as well as offer the perk of hiring fully remote employees.

Why, given all of these benefits, would companies bother with co-location at all? Well, to borrow from Behavioral Economics, I'd say they are making an economically irrational choice to value the show of productivity over actual productivity. Management by visibility. I do think management types are incentivized to continue the show, rather than the substance, because their boss judges based on visibility rather than metrics. At the same time, the fixes are spelled out above since they add that visibility into processes (to an extent), but it takes a management that holds itself accountable.

For another stupid geeky metaphor, businesses are highly parallelized processes. A synchronous co-located organization has highly mutable information sources, it's employees. To get information in such a system, that it must acquire a mutex lock (interrupt the employee) to read information but it's faster for both people. A asynchronous organization, through it's explicit processes and documentation, allows for lock-free reads of information but requires more overhead on the individual processes as well as embracing some Eventual Consistency. In a small organization with few employees/threads and few interruptions/locks, co-location probably is fine. But as your employee/thread count increases, those locks and interruptions exponentially explode and your whole organization can grind to a halt in endless Slack questions and status updates: The Deadlock of Corporations.

If you are thinking about remote, consider tools that embrace asynchronous access. IMHO this means any software that requires both parties to participate at the same time is bad. I'm including Phone Calls, Slack, IRC, AIM, Email, Hangouts, and others like them. You should never have to ask "Did you see/read/notice my X?" as these tools encourage synchronous behaviors. These processes are the Interfaces of your Organization. They increase overhead but they pay dividends when your organization grows in headcount. The ability to hire remote is a perk at this point.