According to user LDN_Films on Reddit (posting anonymously, but "checked out" and vouched for as genuine by Reddit's own AMA team), the issue was that Cavill was already in pre-production for his next film and required permission from the studio to change his appearance. Paramount point-blank refused to allow him to do so.
This would strongly imply that Cavill was under contract to grow a moustache for the role and under financial penalty if he broke his contract.
Q: What was your team's reaction when you heard you had to CGI the moustache?
LDN_Films: A mix - to some people it's a cool little project to get stuck in to and another problem to solve, which is what a lot of VFX is about. Challenging. To me, as a fan, I was annoyed haha Paramount should've shaved him and stuck a fake one on for MI6. Ridiculously petty of them. We did tests on already shot footage of Superman to add a beard as well to show the MI6 team at Paramount it was loads easier, and Warner Bros offered to pay for all the beard adding shots in MI6. They said no.
The director for MI:6 claimed (in a now-deleted tweet) that it was because of all the high-octane action that a fake moustache simply wouldn't work.
In exactly one year you’ll understand: The only way to keep a fake
‘stache on Henry Cavill would be a liberal dose of staples. #MI6
— ChristopherMcQuarrie (@chrismcquarrie) July 25, 2017
So we're left with two options, depending on who you believe;
- An allegation of sheer pettiness
- that there were genuine concerns that a fake 'tash would simply fly away in the middle of a multi-million dollar stunt sequence.
It's also possible that neither are true and that he'd simply already filmed some VFX pre-visualisation shots or that Paramount wanted the option of incorporating early test footage into the finished film. Having him shave and then use a fake moustache would make these difficult due to continuity issues.