A banh mi is 500 calories and the bread is half of it. A Vietnamese baguette is lighter than a French one because it is part rice flour and mostly air, but a 90g loaf is still 240 calories. The other big piece is the spread. Pate is 320 calories per 100g and butter or mayo is 700, and a cart puts about 15g of pate and 10g of fat on each loaf, so 120 calories that you never see.
The meat is less than you think. A typical cart gives 50g of mixed cha lua, cold pork, and head cheese, around 90 calories. Roast pork (thit nuong) or xiu mai (meatballs in tomato sauce) are heavier, 130 to 150 for the same weight. Then the pickles, cucumber and coriander are 15, and the Maggi and chili sauce about 20. That is your 500.
The variance between banh mi is huge. A 15,000 dong banh mi chả with two slices of cha lua is 380. A banh mi from Huynh Hoa in Saigon, stuffed with 150g of meat, pate and a thick layer of butter, weighs 350g and is 900 or more. The published 300 to 350 figures are for the thin cart versions; a real banh mi dac biet from a shop is 500 to 600.