I indeed have it checked to update tags when the properties are changed. If I update one of the Custom Fields with your script, then select OK to apply the changes, MediaMonkey will show the change. I use Custom 4 as indicator if the track should be synced to my iPod or not with 'Y' meaning yes and empty meaning no. The column I have set up for the field will correctly display the 'Y' I just added to the field, but that's it. If I look at the Timestamp for the file in MediaMonkey, it remains the same as it was before I changed the properties with your script.
Taking that further, loading the file in MP3Tag doesn't show the addition of the Custom4 field (and it's not a problem with this software as it correctly shows the other Custom Fields and will show this one with the correct contents if I manually update it in the Properties window.) Even opening the file in a Text Editor (thus showing the raw data of the file including the ID3 tag) shows no change between before and after.
Perhaps the strangest thing of all is this file DOES NOT show up under the Unsynchronized Tags node, though clearly not synced according to the Raw Data visible in the Text Editor. Your script isn't the only one where I've found this exact same behavior,
Update Custom Fields with Pre-Selection will do the exact same thing. That being, will show the update within MediaMonkey, but fails to make the update to the file and won't show the file as being unsynchronized.
As for the performance annoyance, I've found that with your panel open, changing from track to track causes a hang of 3-5 seconds. While not exactly the end of the world, it is an annoyance. I have one Custom Field that has MANY values (roughly 49) and it was when this field was enabled that it was taking closer to the 5 second mark just to switch between tracks. With that one disabled (thus only leaving four on, each of which has no more then a max of five values a piece) there is still an annoying 3-4 second hang.