The crew proactively apologised and said 4 of one type had been loaded and one of each for the others. Ditto with dessert and not enough cheese for all passengers. Again, the same scenario with breakfast.
Is this normal?
Of course this is normal. This is done to protect cabin revenues.
Imagine a passenger wants to upgrade to C or F -> BA can always tell him (and not lying) that a seat is available, but catering is not available.