I think they all use the same driver code and all suffer from the same bug in USB reset, the longer machine stays up, the more prone it becomes to issues with reinitializing gridseeds via USB. Linux users can see something along the lines of "reset full-speed USB device number /somenumber/ using ehci-pci" followed by cgminer/sgminer/bfgminer/cpuminer threads segfaulting in dmesg. Either code or the USB part of the board is running really hot and becomes flakey after some time. For me, restarting miner with --usb resets all devices correctly every time.
One way to work around it is to set "shares" to a value (let's say 1000000, depending on diff on your pool), then run your mining in "while" loop - for example -
while true; do sgminer -c $HOME/.sgminer/sgminer.conf ; sleep 5 ; done
That way even if some of the modules drop out, the miner will restart after reaching preset number of shares with remaining threads anyway and reinitialise all modules after 5 second rest.
Another alternative would be to run each board as separate mining thread per device serial in 'screen', see which ones are flakey, downclock them for better stability etc