Cost per a "conversion", something a little higher up in the funnel, is often times more reasonable than a cost per completed sale. A third party marketing company may be able to get highly qualified traffic through your door, but if your internal sales funnel sucks there is nothing they can do about that. They're helpless, and footing more of the risk financially. Do you implement follow up email marketing campaigns for your leads that didn't convert online? Do you implement call campaigns for these same people that didn't convert online or via email? Are you even able to attribute calls to leads that originated online via the PPC campaigns? Can your site accommodate landing page testing? Is your site even optimized to begin with or are the landing pages already receiving penalties for being of poor quality by Google AdWords? Who is handling the creative development when the marketing company suggests some new landing pages be made? What is the turn around time on these going live? How accurate and robust is your own internal reporting, beyond what AdWords or Bing Ads provides?
All of these things would come into play for a person managing PPC in house as part of their company, and they cannot be solved by simply hiring a third party company. In fact, the third party company arguably has less leverage, and less visibility as to what the resource limitations are within your company, to even attempt to adapt or offer partial solutions.
Marketing agencies have a considerable amount of data available to them via Google's reporting, but that is only a part of the overall picture. If your company can't complete the rest of the picture with their own reporting then no agency is going to be able to help you.
I worked for a large company that signed a pretty hefty contract with a leading internet marketing agency - with a minimum $25,000 management fee per month along, on top of an 8-10% of total spend monthly fee. Many of these agencies won't even bother with you unless you are spending at least $150k-250k per month. The whole engagement was a total disaster, which I later found out was primarily due to all the inconsistencies and errors in our own reporting that our BI team had assured us they had worked out completely with the agency prior to launching. They were sending them all sorts of incomplete or fudged data which in turn cause the agency's automated bid management tools to completely trash our PPC accounts. The agency took the blame initially and were let go after a three month out clause, but it wasn't until our BI team insisted they could build something better in house, in response, that we all discovered they were likely to blame for the failure of the agency engagement. We were constantly unearthing all sorts of issues in our reporting that had gone unnoticed or un-addressed - even something as stupid as the "clocks" on our reporting systems were off by several minutes causing some conversions to be attributed to the wrong days, and not only that, but many conversions to be missed completely (agency's reporting a conversion at 5:33pm, and our reporting says it happened at 5:38pm, so the agency's reporting doesn't match it up and credit it, for example). We also had issues with our internal reporting lingo not being on the same page as industry lingo. Much of our reporting incorrectly labeled search queries as keywords - which caused a chain of confusion all throughout BI, many of which had no familiarity with AdWords to understand the importance of the distinction. Or if you did raise the issue to them, they wouldn't consider it that big of a deal, and brush it off and never address it. Also, the methods they were using to scrape URL parameters off of incoming URL's were frequently outdated and missing many values as a result. For example, different engines, and web sites all label the search query differently. Some label it with a "q" while others may call it "query" or even "searchquery" as well as other names. In our instance, they were only grabbing stuff labeled as "query" and ignoring all others.