I'd suggest a few things -
get them to run npm list -g --depth=0 in the project on their working VM and send you the output. Then you can do the same on yours and diff the list - it will settle the question of whether they have globally installed dependencies that you don't have; and you can try installing them.
As per other answers, different node versions cause all kinds of chaos. Maybe use NVM (https://github.com/creationix/nvm) and put an .nvmrc file in the root of the project, sets a common version.
As per other answers, give WSL a shot. If you'll excuse me for promoting my own content, I shared a getting started guide a few days ago that might be useful - hashnode.com/post/getting-started-with-windows-su…
To get into your question about pre-installed packages... nah, Linux doesn't get special node packages. However what can happen is that the compiled code will vary for the same dependencies. I've tried copying a fully-installed and working node project out of WSL and tried to run that up in Windows Command Prompt (cmd) and it didn't work. Deleted node_modules and freshly compiled it in cmd and it worked. Anecdotally I've also had a friend hit problems where people had run up projects on OSX, tar.gz'ed the project and tried to deploy on Linux and it didn't work. I can't say if this is really common or if me and my friend have just been unlucky ;)
The other thing that can happen is that one package or other might simply not work on windows. I used to dev on windows in a nearly-100% mac shop and the amount of things that broke just due to the different file path format was...well, frustrating. You also get packages that assume they are running in bash, which they aren't on Windows (in cmd). So if the script calls out to a bash command or tries to run a .sh script, it'll fail. For node I did find the modified/configured "Node.js command prompt" fares much better than raw "Command Prompt".
Hope that helps!