Well I have Scan125 users on Macs that had issues under W7. I developed Scan125 under W7. Indeed Mac users on W10 have not raised any issues with me to date. (please note that when you provide free software and issues arise then many users will not bother to report/contact you and just walk away. their loss but this attitude/approach does not help the developer(s))
I think the OS in use is not the issue but when the OS is run under a VM / emulator / similar then this is where issues can occur. To my knowledge most PC software run on Macs / Linux / others under VMs do not exploit/rely on fast and dedicated access to serial/USB ports in a "bilateral communicative exchange". I think any hardware/software engineer, especially on safety critical systems, will deem/require/expect a "one to one" interface and not via a third party.
A lot of this comes down to coding design. I could send a command "shut up" to the OS to pass through to a serial/usb device. If I code correctly then I should await the OK response from not only the send process but also from the client receiving process. In 99%+ cases I could just accept that if the send rc was zero then waiting for the handshake acceptance rc of zero was not important. Correctly the software issuing the commands should validate both the send and return paths. With VMs/other intervening bods then the messaging between source to client and client to source can be upset / delayed /etc and this is when issues occur.
Steve's G's Spinrite is a good example. To do what SR wants to do then he needs the fastest most absolute and uninterrupted access to the hardware without going through a "middle man/OS".
Scan125 uses a fully "closed loop" exchange with the scanner. An example would be you send freq 123.456 to the scanner. For Scan125 this is not the end of the process. The scanner could/will change 123.456 to the next nearest step value, say 123.450. Scan125 will do a read back from the scanner and detect the change to 123.450 and then change/alter/adjust it's value from 123.456 to 123.450
To squirt a command to a port is one thing and even under a VM this may work OK. But to dynamically do the whole "round robin" of send cmd/check cmd was accepted with no error/read back from scanner/etc actually involves a sequence of commands and responses and any delay/interuption will either leave the scanner and client out of sync or result in the software eventually saying enough is enough *we* can not reconcile our differences. This is what Scan125 does and under native OS configurations (ie. Windows direct to metal) I've had no issues but when VM's where the VM controls the hardware I've had plenty if timing/response issues to work around.