I have exactly the same problem. I've put some more analysis and details in this StackOverflow question, and submitted a SharePoint UserVoice entry to get a solution from the SP dev team. Please vote for it !
I actually end up using the yarn-offline-mirror method.
First installed NodeJS and Yarn on a computer with internet. Then setup the yarn-offline-mirror folder to collect all the dependencies.
Then added Yeoman and Gulp, and the SP Generator. All the dependency .tgz files are stored in yarn-offline-mirror.
I installed NodeJS and Yarn on the VM with the ...