As I understand it, the underlying data has no time component (i.e., we don't know on what date the person moved; just that they moved). Therefore, showing a stream of particles moving out of a city brings in an (erroneous) time aspect to the move. For example, you see one city lose its population; and then a minute later, people start flocking to it. There is no temporal causality here, but the visualization projects such.
A better way would have been to project all the moves along the same time axis, and show them all at once.
Another idea: plot the delta (gain - loss) for each city as a circle; make the size of the circle a function of the magnitude, and the color a function of the sign.
You can also slice-and-dice by demographics and income (like the video did towards the end), and just show those numbers. (Which cities gained the most millionaires? Which cities gained the most youth??)