I think of several reasons for the price difference between exchanges:
+ Different trading volume: the smaller the transaction volume, the easier it is to pump/dump in a short time;
+ Users vary in number, country, and interest;
+ Time zone: traders in the US go to bed and traders in China work. And vice versa;
+ Difference in regulations for crypto in different countries;
+ Difference in the inflation rate between countries;
+ Fluctuations in exchange rates between fiats;
+ Fees of transactions & deposit/withdrawal of exchanges.
Normally the price difference between the exchanges will always be kept to a minimum, because traders will take advantage of that to make profits and gradually narrow the difference.