Ok, I think I understand what causes the confusion.
With CodeCapture you get the code the Web Client runs when a user performs an action.
In my experience, the code used by the Web CLient is not always the most logical.
But that is probably since the Web Client coders know vSphere much better than me.
In your case, removing a VM from the SDRS overrides is done by 'adding' the VM with no properties set.
So in fact, the Enabled property is $null.
I suspect the SDRS code interprets this by removing the VM from the visible entries in the Web Client.
But the VM, or better said it's MoRef, is still there.
Just check for example $dsc.ExtensionData.PodStorageDrsEntry.StorageDrsConfig.VmConfig, and you'll notice that there is still an entry with the VM's MoRef in there. But none of the properties, like Enabled for example, is set.
To really remove a VM from that list, you need to use indeed the 'remove' operation.
Something like this
$dscName = 'MyDSC'
$vmName = 'MyVM'
$dsc = Get-DatastoreCluster -Name $dscName
$vm = Get-VM -Name $vmName
$StorResMgr = Get-View StorageResourceManager
$spec = New-Object -TypeName VMware.Vim.StorageDrsConfigSpec
$vmSpec = New-Object -TypeName VMware.Vim.StorageDrsVmConfigSpec
$vmSpec.Operation = [VMware.Vim.ArrayUpdateOperation]::remove
$vmSpec.RemoveKey = $vm.ExtensionData.MoRef
$spec.VmConfigSpec += $vmSPec
$StorResMgr.ConfigureStorageDrsForPod($dsc.ExtensionData.MoRef,$spec,$true)
Long story short, using CodeCapture doesn't always produce the 'logical' code, but gives you the Web Client implementation