edit: why doesn't this have a parent comment anymore? bug?
Giving someone a coding exercise is the most time and cost effective way to filter people. Why waste time spending eng or HR hours calling someone when they can't code? As dumb as it sounds, giving a simple assignment probably culls the number of actually applicants down significantly.
I get a quick read on the candidate, which is handy, but more importantly, I get to sell them on the job. And I get to demonstrate that that, unlike somebody who thinks that talking to interested people is a "waste [of] time", I'm interested in the candidates as people. And will remain interested in them as people after they've joined.
A lot of hiring practices are built around the notion that jobs are scarce and workers are desperate. That's not true for good developers and hasn't been for years. I think the reason the attitudes are so persistent is that there are a lot of managers who like feeling powerful in relation to candidates, and that treating them like actual humans interferes with those feelings.