The difference is that housing costs take up a much higher percentage of wages in California than Ohio and as a result there are many many more homeless people in California than Ohio.
Sure, if you want to take a holistic view of the entire planet, the people have to come from somewhere and there is a finite demand for global housing. However that just isn't a practical way to look at it when the problems are localized. Different cities and regions have varying levels of desirability. It makes sense to build housing in those cities and regions for a wide spectrum of the population. The solution shouldn't just be "if you are poor, move to Ohio".
[0] https://www.census.gov/housing/hvs/files/currenthvspress.pdf
[1] https://endhomelessness.org/homelessness-in-america/homeless...
You don't need to go as far as Ohio, just a commuter suburb.
I don't really see this as a gotcha. Those would-be new arrivals to the city don't materialize out of thin air. Presumably they left some other place behind, and their migration is freeing up housing stock wherever they leave behind. The underlying dynamic is still the same. New housing increases low-end affordability by soaking up mid-end demand for old housing stock.
Maybe you build housing in the Bay Area, and all it does is bring in new people who pay the same market rate. But that migration will free up housing stock in Ohio. The only difference is that instead of helping the house poor in your local area the policy helps the house poor in flyover country. Unless you place a lot more moral weight on helping Californians than Midwesterners, what's the difference?