The etymology might help break down some of the nuance here
According to etymonline the etymology for expatriate (often shortened to expat) is:
“to banish, send out of one’s native country,” 1768, modeled on French expatrier “banish” (14c.), from ex- “out of” (see ex-) + patrie “native land,” from Latin patria “one’s native country,” from pater (genitive patris) “father” (see father (n.); also compare patriot). Related: Expatriated; expatriating. The noun is by 1818, “one who has been banished;” main modern sense of “one who chooses to live abroad” is by 1902.
Immigrate, is similar, but is more used to describe moving to a place:
“to pass into a place as a new inhabitant or resident,” especially “to move to a country where one is not a native, for the purpose of settling permanently there,” 1620s, from Latin immigratus, past participle of immigrare “to remove, go into, move in,” from assimilated form of in- “into, in, on, upon” (from PIE root *en “in”) + migrare “to move” (see migration). Related: Immigrated; immigrating.
The closer synonym to expatriate would probably be emigrate, the opposite of immigrate, to leave a place.
As to why one might use expatriate over emigrate; consider the sentence “I’m an American immigrant”. It’s kind of unclear if you’re trying to say that you are an American that has migrated to another country (as in “I’m an American immigrant living in Brussels”*), or someone who has migrated to America (as in “I’m an American immigrant from Slovakia”). Using expatriate removes the ambiguity: “I’m an American expatriate” and makes it clear that the speaker is trying to convey where they are from.
* technically, using emigrant here would be more clear, but English is a lawless and lazy language
Nice! My family doesn’t like mushrooms either, so my mom has always subbed in cream of chicken, but onion sounds pretty great too.