If the environment variable PYVENV_LAUNCHER is set when tox is launched then the pip subprocesses that tox fires off to install dependencies get confused and install everything into the virtualenv that tox comes from, rather than the test envs.
The "fix" is to add PYVENV_LAUNCHER to the list of environment variables deleted from the environment in the _pcall method (along with VIRTUALENV_PYTHON and PYTHONDONTWRITEBYTECODE).
Sorry I can't provide a better report than this but I'm not sure what PYVENV_LAUNCHER does - only that it causes trouble sometimes and is the specific cause of the problem in this case.
I've attached the output/logs of trying to run tox with flake8, with what I hope is a reasonable explanation of what's going on. It's kinda verbose, sorry, but it does show the failure and then success after I make the edit above.