A late addition:
The two terms come from completely different sources, so it's not surprising that their definitions are not clearly delineated. By which I mean, sometimes when we have related terms its because some person or group got together and said, Let's call this X and that Y, and when they defined X they were specifically thinking of Y and vice versa. Like some government agency may declare that for purposes of calculating import taxes, a "truck" is a vehicle that meets such-and-such definition while a "car" is a vehicle that meets this other definition and they are careful to make sure that the definitions don't overlap. But when words come out of different fields, the difference between them is often fuzzy.
In general, an "expat" or "expatriate" is someone living in a country other than the one where he grew up. One definition of "migrant worker" is someone working in a country other than his home country. There is a lot of vagueness in both definitions.
If I was born in country A but my parents took me to country B when I was 2 years old, am I an expat? What if my parents are citizens of country A, but were temporarily living in country B when I was born, and then at some point the family moves back to country A? Does my age when we moved back matter?
If I move to country B to get a job and stay there for decades, at what point do I cease to be a migrant worker and become a resident?
The UN or some other organization may have official definitions for some purpose or other, but official definitions are rarely the same as the meaning people use in daily conversation. (Like, a physicist's definitions of words like "work" and "force" are very different from the day-to-day meaning of those words. I'm sure that physicists say things like, "My boss used a lot of force to make me work late on this project" when the actual product of mass and acceleration involved was very low.)
But in broad terms, I think most people would call anyone living in a country where he is not a citizen, or where he just recently became a citizen, as an "expat". They might limit the term to middle- and upper-class people. A refugee is not usually called an expat. "Migrant worker" is much more specific, normally reserved for people living in another country for a short period of time to get a manual-labor job. I've never heard of, say, an American who moves to Japan to become the new vice president of the Asian division of his company referred to as a "migrant worker".
So in general I'd say that migrant worker could be a subset of expat, or you might say that lower-class people could be migrant workers while upper-class people in the same situation would be called expats. Someone who moves to another country to retire would be called an expat.