As some have said, it's not about being superior. Common language, background, maybe overlaps in education, and avoiding cultures like those at Indian offshore companies where there is a lot of churn, maybe 1 Sr person you "hired" really farming the work out to multiple Jr people.

Timezone overlap is also a big one.

I agree with what you've written, but I've worked with colleagues in South America and Eastern Europe where none of those problems existed: folks spoke perfect English, people were incredibly motivated to do a good job, and they spoke up proactively when problems arose.

I have had issues with Indian outsourcers like you say (lots of churn, time zone hell, a culture of pretending everything is fine until release day and then saying "sorry, nothing works", etc.), but it's a bigger world now, and there are still lots of folks making half of US dev salaries where none of these problems exist.

My intuition says there are some stylistic differences. It seems like some development cultures somewhat have better results with more rigid computer engineering sort of tasks with high granularity requirements and more straightforward goals, even if the tasks are really hard, deeply technical and the goals are difficult. I think some are better at the more nebulous sort of tasks with a lot of flexibility. Both are really useful mindsets that seem much less useful if improperly applied.

Given, outsourcing is probably going to be hit-or-miss regardless of who’s doing it.