Locally (where we have a lot of folks who come from other countries to work in agriculture), I've always assumed it's about duration: If you come to work the season, you are a migrant worker. If you come to stay on a semi-permanent basis, you are an expat. But maybe I've been using those words wrong?