To be clear - You should not have had to pay OOP for him at ANY buffets/family style locations. It's Disney's policy that those under 3 dine for free at AYCE places (and they may fill their own plate). I am sorry that you were charged - you shouldn't have been. I say this because you specifically mention CM and say that you don't think it's to be expected. I am not sure if there is any recourse at this point (If you indeed did pay OOP at any buffets), but it may be worth calling and explaining the situation. Disney may have a record for you.
As stated before by many at TS locations that are 'plated' meals, then yes. You pay OOP for any meals ordered for your children and you may have to pay for your drink.
At Buffets & Family Styles you do not pay for your children who are under 3.