one of the main issues
is that companies don't often realise how much "added value" they get from their in-house staff, and it only clicks once an external company either doesn't do it, or charges them for it.
It's not universal, but in general, in-house IT staff deal with an application as if it's theirs, and treat it as such ( although if they are just twiddling about with config of a 3rd party app it's not as clear cut as in-house written stuff, but that's an argument for another day) If it goes wrong, they know they'll have to deal with it, and so take a bit more care. if it's not what the business need, they'll question things, as it'll save them rework in the future.
From experience, the outsourcing companies treat it as someone else's, as it is. If it meets the requirements it's fine, and it's in their interest for the requirements to be incorrect, as that means added change requests... It doesn't need any added value that might make it slicker to use, leaner, or easier to maintain in future. If it throws out the odd error to the users, that's fine as long as it's in SLA etc. Its a bonus if it is to requirements but has loads of usage issues, as the client then has to pay them more to change it so it actually does what they wanted initially.