Hi Peter,
I think I know why.
In general VirtueMart is old software, and instead of using Booststrap 5 styles from Joomla 4/5 it still uses its own (legacy & tragedy) CSS code.
But with a few lines of extra Custom CSS you should be able to fix it, here is example:
.row > .width25, .row > .vm-col-4 {width: 25%;}
.row > .width33, .row > .vm-col-3 {width: 33%;}
.row > .width50, .row > .vm-col-6 {width: 50%;}
Use it inside Template Options > Custom Code > Custom CSS
and you will have 4, 3 or 2 columns grid according to settings.
That's all we can help, now where you know the reason, whole rest is on your hands....