I work as a consultant in both the public and private sector, so my perspective on this is a bit different. I've worked for the big firms, but now work through a network of other boutique consulting firms to deliver larger projects. Each of your points has a counter argument and counter evidence. I will say that I don't think anyone gets their money's worth from the big firms. Their rates are too high and while they may have access to the right expertise, after the first week of the engagement the specialists are all gone and the client left with the B team. I've been approached many times to subcontract under one of the big firms and I've so far turned them down because they are so arrogant. They usually don't want to actually use my specific industry expertise, they just want my CV to bolster their bid. They trust their endless pool of resources and standardized methodologies to make up for their lack of expertise.
I'd also like to point out that the failure rate of IT projects in general is very high (close to 70%) with little to no difference between in house and out sourced projects. I would add that a sizable portion of my work is refocusing (or replacing / undoing) projects that were started in house and went off the rails. I also know the flip side is also true - failing external projects are brought in house just as often.
There are several good (and some bad) reasons to bring in consultants.;
When you don't have the skills in house, or when your in house skills are fully utilized on other projects it makes sense to hire contractors. Contrary to popular belief, most IT staff do not spend most of their day playing Minecraft or streaming episodes of The Big Bang Theory at work. Most IT staff I'm familiar with work 50 - 60 hours per week and have weeks of backloged operations support and in house projects. Expecting them to add yet another major project off the side of their desk is a strategy for failure. Contractors (can) bring focus. I usually only work on 1 or at most 2 major project at a time.
Hiring staff for projects is not easy and not always the best idea. When you hire someone you invest in recruiting, training, benefits, pension, etc. because you expect that person to be with you, and productive for at least 3 - 5 years. If you hire people just for a project, at the end of the project you can end up with staff who are either under utilized or under motivated because their skills and/or ambitions are no longer what you need. Alternatively, you could end up creating projects with shaky business cases just because you have some in house resources. As a consultant, while I love to be re-engaged for subsequent work, I have no expectation of such. My best marketing is to get the job done. I usually include a post implementation review 2 - 3 months after the project. For me, this is a sales opportunity, but it is also an opportunity for the client to evaluate and learn from the implementation. This is something that doesn't always happen with in house projects.
When people say contractors get paid more than in house staff they are not seeing the whole picture. The things I mentioned above - recruiting costs, training costs, benefits, pensions, health insurance, vacations, paid breaks, statutory holidays, office space, admin support and HR support are all costs for internal staff that are either paid by or not applicable to contractors. Additionally, I carry errors and omissions and liability insurance - where the client company is entirely on the hook for the errors, omissions and liability risk of its employees. Finally, contractors can only bill hours actually worked on the project (or in some cases, a fixed price) where staff are paid regardless of utilization. When you factor all of those things in, experienced staff with equivalent expertise are often paid/cost more than contractors.
The biggest problem with outsourced projects is often in procurement. I haven't seen very many good procurement departments. They are often either inexperienced in the business area, they don't seem to know how to negotiate a good contracting relationship, they are overly bureaucratic; focused on rules and rigid policies and/or they are more concerned about liability in the contracting phase than risk in the implementation. Often they don't understand the relationship between cost and risk. If you want to off load all of the risk onto a contractor, you are going to pay for that because only an idiot is going to take on high risk without a commensurate reward. There are many ways to share or manage risk and cost in a contracting relationship, but if it doesn't fit into their rigid policies that are designed to off load risk without any consideration of cost, they can't seem to understand that it drives up contracting costs. Additionally, it is very difficult to manage scope if you don't understand the business area.
Another reason NOT to hire consultants is if an executive sponsor in the client organization has a former business or personal relationship with a consulting firm. I've seen so many of these nepotistic relationships and they NEVER work.
Another major cause of failure is outsourcing too much or too little of the project. If you give the whole project to a contractor and have none of your staff involved in the implementation, how on earth do you expect to have knowledge transfer or a seamless transition from implementation to sustainment? On the other had, if all you are outsourcing is a PM don't expect any added value or specific expertise because that's not what you hired.