Ah. Yes, the GameEvent should work fine; I thought you were referring to the City:SetPopulation, since you also talked about FoodDifference. (The GameEvents are mostly relatively new and not very well documented.)
So yes, you could just make a function that keys off of that GameEvent, and if NewPopulation is less than OldPopulation it does something. Of course, there are two big problems with having a size reduction do something beneficial (like spawn a Settler):
1> There are more ways to lose population than just starvation. For instance, how do you tell the difference between losing a size due to starvation and losing a size due to being conquered and/or nuked? You can check FoodDifference, but it's possible to be running negative on food, still have plenty stored, and lose a size for those other reasons. So you'd also need to check the current food supply and figure out if it's possible that it was possible that it was a starvation loss, but even that's not conclusive due to how the numbers work.
(This sort of disambiguation problem applies to a lot of events. For instance, the SerialEventUnitCreated event triggers whenever a unit is created, embarks, disembarks, rebases, or you reload a savegame... you often have to find other ways to indicate this.)
2> An AI will attempt to stay at or above zero on food, because it thinks that growth is good. A Human, if he knows about this extra benefit, might choose to deliberately starve his own city to take advantage of it.
This is common to a lot of Lua modding; the game's AI will continue to play in its normal way, regardless of what you add. If the benefit is significant enough (and I'd say that adding an early-game Settler is), the human player gains a large advantage.