1. The goal for every outsourcing is to make your product great because only in that case they can upsell you and make more money.
2. Outsourcing company can and do create the detailed specifications, but usually founders don’t want to pay for that, thinking that they can formulate everything theirselves, that in most cases they cannot do because their vision changes rapidly. That’s why having a partner gives you a better flexibility.
Outsourcing works great when you have a clear vision or goal to achieve in that case you can benefit from the fast access to the competencies that you don’t have inside your team.
And of course costs matters, if you’re founder from the region where engineer salary is 3 times less the in SV it’s better to hire the core team then outsourcing it. But for US, Germany, Sweden, etc - outsourcing is more flexible and cost efficient solution.
P.S. find great partner is hard, find great outsourcing partner is also hard