I participated in a paired programming interview once. I didn't get the job, but I walked away with respect for the organization doing it.
It gave them a chance to see how I worked as part of a team. Even if day to day I'm not pair programming, it starts off the relationship saying "If you need help on a problem, you can be comfortable working with your teammates."
The great thing about the setup is that it doesn't have to be a unique or complex problem. "Write a function to reverse a string. We'll write unit tests in parallel with that."
Or one of the thousand other problems. You're not testing algorithms here, you're testing whether the candidate is arrogant. Or talks too much. Or doesn't ask for help. What happens when they get stuck?
You're right, it's a lot of effort. But the resources spent on a bad hire can be even more expensive.
Most companies aren't willing to invest these kind of resources into the preparation of each interview.