I don't think companies "should", but my companies do when we give people take-home projects to assess programming skill. Our preference is to do contract-to-hire, but not every applicant can assume that risk.
Thanks to this post, my companies will now pay applicants for interviews as well. Time is time.
I've honed my hiring process over the years, so we only spend more than 15 min with 3-4 candidates at most (and one of them is always a home run). It won't cost much to pay 3-4 people.