Probably because the only person who doesn't lose from this is the interviewer: they get to have fun. Honestly, when you spend all day buried in code, it's fun to play with puzzles for a change.
Perhaps it's time we started optimizing interviews for hiring success rather than interviewer happiness.
Then do a short-term contracting gig (maybe just 1 day). If it works well, hire them.
Edit: clarify length which even the best people could do.
They generally have a long history of awesome projects they have worked on, and they've built years of reputation through working on such projects.
And they just don't pick up any other project in any other company. They are pretty much clear about the best kind of problems they want to work on, and they don't wish to waste their time other than that.
Every time a company boasts about having a process to hire only 'A' candidates I chuckle. The 'A' or even 'B' candidates aren't even up for hire. The interview process begins with 'C' people.
Truly high quality people are generally known by their reputation and are headhunted rather than expected to answer job ads.
Also, I don't think it needs to be a long gig. Maybe even just a day, which isn't much longer than the gauntlet of technical interviews some companies will put you through. Even that short period should be enough to see if someone works well.
Ideally, all of them. It's not hard to find a couple one-off tasks that you'd like to see done in a day. Or could could proceed sequentially until you find one whose work you like.