You're missing that venv and virtualenv can't do that: they can only create environments for your current Python interpreter, not arbitrary Python versions.
There's no flag that I'm aware of that makes venv install a different Python version than the one it was invoked with.