Sim, há uma diferença.
Obviamente, os núcleos físicos só superariam os núcleos virtuais se os programas realmente os usassem. :)
Os núcleos virtuais simplesmente aproveitam as barracas de CPU para processar outro encadeamento, enquanto a CPU está aguardando. Quando nada está parado, porém, eles não executam mais instruções de cada vez do que um único núcleo.
Os núcleos físicos, por outro lado, na verdade executam vários threads em paralelo; eles são muito semelhantes a vários processadores físicos, exceto que os caches e esses componentes podem ser compartilhados em alguns níveis.