My friend Scott Sehlhorst offers a detailed view of what it takes to make outsourcing work. He explains that there are essentially four different models for managing a software development project with respect to onshore and offshore roles. Read.
I find that there's a trade-off that isn't appreciated or understood by the advocates of offshoring. The trade-off is between domain knowledge and required detail.
Do you want it quick or cheap? Pick one.
You can be brief and agile with a group that understands the product and the domain; you must be extremely specific when dealing with people who do not. And with this required detail comes more time in meetings and more time writing artifacts--and less time building product.
Whether onshore or off, a product team needs to understand the personas and their problems. If you're dealing with people who "just want to code," someone on your team will have to detail everything exactly as you want it delivered.