In VMware whenever you assign more than one vCPU to a guest it has to wait until all these vCPU’s (or host cores) are available. It has to synchronize them.
Let’s assume you have two physical cores and you assign two vCPU’s. Everytime when the guest has to schedule work to both vCPU’s it must wait until both physical cores are free (that leads to a dleay in the guest). It then graps these cores and then there are no free cores for the host and all its applications (that leads to a delay on the host) until the guest is descheduled again.
A rule of thumb says that yu shouldn’t assign more than 50% of vCPU’s to a guest than you have physical cores.
Having more that one guest with more than one vCPU leads to more processor contention.