How can median wages be significantly different in two neighboring countries with open borders? As an example, take Germany and Czech Republic. Both are members of the EU and therefore trade barriers between the two countries are minimal. However the median salary in Germany is nearly 3 times as much as in Czech Republic. How can that be?

Are the Germans three times more productive than the Czechs? Do they produce products that cost three times as much on the global market? If so, does this mean that Switzerland (which has a median salary twice as big as Germany) is twice as productive as Germany and six times more productive than Czech Republic?

I simply don't understand where the monetary difference comes from, especially in neighboring countries with open borders. It's certainly easy to understand in case of oil-rich nations (e.g. Saudi Arabia vs. Jordan), but not in manufacturing-based economies.
The underlying reason are probably differences in labor productivity. Assuming decreasing marginal productivity of labor, the real question is why migration flows do not equate labor productivity and wages as would be predicted by simple GE models.

I can think of several factors:


Moving is costly
Czech people in Germany are not as productive as Germans in Germany, because they don't speak German. 
People prefer to
live in their home country even if that means earning lower wages.


That being said, I guess that wages in the Czech Republic have been growing much faster than in Switzerland or Germany and the gap is indeed closing slowly.