Many thanks for reproducing and confirming it's a bug. Unfortunately as I'm just a home user, I don't have a support contract to raise an SR.
Your workaround code is great except I don't have a SCSI controller in my VM as I remove the hard drive that New-VM creates and that removes the SCSI controller too. Given that New-SCSIController seems to need a disk, I ended up using your same API method to create all of the same SCSI controllers as in my "template" VM before I then create the hard disks using your workaround.
Thanks again for your help.