I diagnose the issue as a a cultural disconnect between the ostensible justification for the welfare state, and the actual operation.I think this is right, but incomplete. Even if we cared about the needy without regard to their nationality or status as "compatriots", we still wouldn't "ship all money abroad" because, realistically, that wouldn't be a very effective way of helping people. Whether or not our compatriots deserve more aid, they're easier to help.
The conscious justification is "We need to take care of the needy". But of course, if this were the actual logic, no Western government would spend any money on domestic poverty programmes; they would ship all the money abroad to countries where poverty is really dire, and let the people at home, who at least have things like clean water to drink, shift for themselves.
The actual pattern of thought is "We need to take care of our needy compatriots", with a much weaker "We'd like to take care of other needy people, money and time permitting".
Making foreign aid effective is notoriously tricky business. Actually, the folks at the Economist themselves put it thusly:
Poor governments tend to be corrupt and inefficient; the countries do not have the complementary assets to make use of vast inflows of aid. There are some convincing papers showing that aid is negatively correlated with outcomes, even after controlling for the fact that screwed up countries tend to attract sympathetic donors. Raghuram Rajan, a professor at the University of Chicago who was, until recently, the chief economist at the International Monetary Fund, has a relatively new paper with Arvind Subramaniam indicating that foriegn aid makes poor economies less competitive by raising real exchange rates, a developing-world version of dutch disease. Recent evidence also indicates that aid may undermine good governance, by giving the government a source of revenue that, unlike taxation, does not depend on the goodwill of their constituents.That was four months ago, though, so maybe their editorial position has changed.