Bueno, pues las diferencias ya las as comentado un poco tú. En realidad, como bien apuntas, ambos alojamientos son compartidos, es decir, en el mismo servidor habrá otros dominios aparte del tuyo, pero el servidor virtual tiene mucha más versatilidad, aparte que suele estar menos masificado, o debería.
La diferencia principal es que el servidor virtual se ejecuta en una
virtualización de una máquina. Por si no lo sabes una virtualización, en líneas generales, es la creación por medio de software de un sistema independiente dentro de otro sistema operativo. Es como si dentro de tu sistema creases una cápsula con otro sistema dentro, que se ejecuta de manera independiente y tiene la posibilidad de configurarse también independientemente. Esto puede ofrecer la posibilidad de tener varios sistemas ejecutándose en una máquina física. Esos sistemas virtuales tienen la particularidad de funcionar sin afectarse los unos a los otros.
Pues bien. en un servidor de alojamiento compartido, no suele existir virtualización, sino que en un mismo servidor Apache se configuran diversos dominios. Todos los dominios del servidor compartido tienen básicamente la misma configuración, que ha definido la propia empresa proveedora del alojamiento, y que no suele poder alterarse entre los diferentes dominios alojados. Frecuentemente, en un hosting compartido se sobrecargan las máquinas y se llega a alojar más de 1000 dominios. El proveedor no suele garantizar ningún tipo de recurso para nuestro dominio, de modo que, el servidor puede estar saturado por los dominios de otras personas.
En cambio, en los servidores virtuales suele haber una mejor distribución de los recursos. Los proveedores además suelen por contrato asegurarnos una capacidad mínima para el servidor virtual, en memoria, capacidad de uso de CPU, espacio en disco, etc. Pero lo más importante es que en los VPS se puede configurar cualquier aspecto de la máquina, como si fuera utilizada únicamente por nosotros y eso se consigue sin afectar a las configuraciones de otros servidores virtuales alojados en la misma máquina física.