2 Answers
2

As with similar cases like Beaulieu, Belvoir, Cholmondley, Fetherstonhaugh, Leicester -- (Bewley, Beaver, Chumley, Fanshaw, Lester) -- it's because English spelling changes much more slowly than English pronunciation. Old families had their name written down a long while ago and there's great risistance to spelling reform in English. Despite this, the spoken language changes as all languages do, as vowels move, consonants are elided, and so on. The result is that the two drift apart.

But also remember that many of these words come from languages (such as Norman French) which even at the point of divergence way back in history weren't pronounced in the same way as their modern equivalents (eg Modern French). Beauchamp, as an English family name, was probably never pronounced as it is in modern French. In the eleventh century it would have been pronounced in a way which would sound odd to both English and French ears and then each language went its own way and the spelling? Well, the spelling stood still.

I suspect the name, and more potently the surname, Beauchamp, would have been pronounced as in the French dialect until at least 1485.
Those who do, will recall this was the pivotal year which saw the end of the so called 'Wars of the Roses' (itself a romantic contrivance from the Victorian era)
The battle of Bosworth, fought on 22 August 1485, also pressaged the end of the Plantagenet line and saw out the Medieval Age. I also strongly believe that, by tenuous, treasonous and unfounded claims, the Tudor regime came to power. Ever thus it has been.
To the point, pronunciation of Beauchamp, along with numerous others from the Norman invasion, would quite probably have been Anglicised to help enforce the Welsh Tudor claim and distance the new dynasty from all and any French English origins.