I've found that if you queue up another action after they start eating, (or keep an eye on the hunger mood and cancel right as it hits full) they will stop once they're full, even if there's food still on the plate. This has kept my non exercising bookish sim fairly slim. I then sneak the plate back into the fridge for them to snack on their leftovers later!
Fun tip, if you queue up quick meals twice and pick one as juice/milk, and the other food, the sim will get both and eat and drink simultaneously, saving money, filling the hunger bar more, getting the juiced happy moodlet, and plus it's a nice visual to see them having a glass with their food.