Uh, that is a pretty big presumption. I actually play in several groups and a few AL leagues as a wizard. I rarely get hit or targeted-- and when I say rarely I should be more clear. I might get hit 1 to 3 times a combat, but it is nothing I can't shrug off. Without Shield, that number might go up to 4-6
Also as I mentioned if you are are playing with 2 other PCs (or really 3--cause I was being tongue and check) you are more likely to be wading in combat and I can see MA in that case. But in the average party size of 4 to 5, it rarely happens. But I don't really output any damage (cantrips are the only attacks I do).
You get hit 4-6 times per combat, 1-3 with unlimited Shield use. So +5 reduces the number of hits by 3. +3 will therefore, statistically over time, reduce them about about 3/5 of that, so with Mage Armor you'd get hit just slightly over 2-4 times per combat.
So, for a single spell slot, you can get hit 2-4 time with Mage Armor or 3-5 times (4-6 less one generated miss) for Shield. Mage Armor is better.
Now, assuming that you perfectly use Shield - never waste it when you need a +6 to better change to the roll, that's three Shield spells per combat. Forget the 6-8 recommended combats per day, with even half of that you'd have 3-4 combats a day. That's 9 to 12 first level spell slots per day ... which of course you don't have. At 5th level if you don't cast a SINGLE other spell you can just about get enough slots to cast Shield as you want - assuming the lower number of encounters per day. Otherwise it's 8th. And nothing else but Shield. I can see why you said you do cantrips only offensively.
So yeah, looking at efficiency Shield is inferior to Mage Armor.
If, on the other hand, we assume we'll blow ever 1st level slot but not more, then Shield is protecting against at most 4 attacks, and with Mage Armor protecting for ~2 per combat with 3-4 combats, that's 6-8 per day. So even if willing to use all 1st level slots, Mage Armor still protects more.
Really, your table experiences are very clear.
So your last point is correct - my assumption it was table variation was wrong. I really gave you the benefit of the doubt you analyzed it correctly and based my assumptions on that. Now you've cleared it up that your table experience do not support your point, so aren't skewed from normal as I assumed.