I would think that BA would do some statistical analysis to be able to make accurate predictions as to what is chosen each time. So they could account for a margin of error on the positive side and have 1-2 extra of a meal.
As for that short haul flight only having 50% of passengers taking the meal, you'd think they'd bring few then if that happens really often. Maybe cut it down to 80%. But on short flights of under an hour, I'd not even offer meals, maybe snacks tops.