The context switching costs don't change just because you're using node. The suggestion to spawn workers equal to the number of cores (really, it's #cores -1, so the spawning process can still run) comes from the assumption that there are no other processes demanding CPU time.
In some more reliable systems, care is taken to ensure there is enough cpu time available to non-workers which provide essential system services. That way if any workers get out of hand, the system will still function at a minimum level. The choice to implement something more complicated such as this is going to be based on the requirements of the system. Since most systems won't have this kind of requirement, spawning a worker per core (- 1) is a decent default policy.
Ultimately context switching costs in a scenario where you are doing 1 to 1 node processes to core are pretty minimal as long as there are no other services running on the system which demand immediate cpu time or any long running computational load. OS schedulers try to be smart about these issues, but not having enough RAM in a system where swapping is happening will make even trivial context switches (ie, allowing ssh to spawn a new user shell) bog down some running processes.
Hopefully this is what you were looking for?