It will cost them more
Maybe, maybe not. Depends on how often your company hires for that particular skillset. If you hire one developer a year on average, contracting it out to a specialty company (that has people who know how to interview developers) could easily be cheaper than the time spent of people figuring it out.
Cost is also not the most important factor. The cheapest way to search for candidates would be with a poster on a lamp post. That would not get good quality candidates though.
and they will be narrowing their candidate pool
You have to remember that not all applications are of equal quality.
I met a guy at a conference who put a job for an admin assistant on Indeed and Craigslist. We spent the rest of the evening enjoying the terrible quality of the resumes and cover letters submitted. We stayed up late reviewing them for funny stuff. Most were absolutely horrible. Some 20 people called one of their past jobs "clark" instead of "clerk." Plenty were new grads with no experience whatsoever who were stuffing things like "3rd grade student of the month" on their resumes. 1000+ resumes later, he did not find that many good candidates. He ended up going to a recruiting company when I met up with him a year later.
The most desirable job applicants are those who are already employed. They are also the candidates who are least likely to be searching for jobs.
A recruiting company will (theoretically) go to find them instead of relying on passive candidates. It narrows things down to a few good candidates instead of a pile of crappy ones.