I understand everybody has to have the exact same number of vnodes for
reads and writes to hit the correct node, right ?
Yes.
That's true, but it is not a good thing: numVirtNodes should be proportional with the node's capacity, i.e. more powerful machines in the cluster should have assigned more virtual nodes.
This way we can better control the load. A node would need to send its configured numVirtualNodes when joining in order to support this, but that's a thing we already do for TACH.