On the old SuSE server, we used one global
PerlSetVar MasonDataDir /cache/path
plus one
PerlSetVar MasonDataDir /cache/path/vhost
per virtualhost.
On the CentOS 5.2 host we simply had to remove the global setting. This caused the virtualhost settings to become effective again, solving the main problem.
However it also meant that for any request not matching any of the virtualhosts, Apache would try to cache contents in /var/www/mason. We simply created this directory and made it writable by the apache user. /var/www/html only contains a stub index.html with a meta refresh to our official URL so the cache won't ever grow in size.