I've made a few more changes to make it clearer what's happening because I don't think I explained it very well. Console breakdown:
I believe that when the select field options (serialPortsListEdit) are changed after the 3rd compute, the select field is deselecting COM4 as the value, even through the above proves it's still in the bound options list at that point.
The deselect would explain the 4th compute (as there's a change to selectedDevice, the other KO variable used in the compute), and consequently the end result.
I'm not sure how to break this down any further. My only guesses are either that the re-added "COM4" in the array is somehow different to the original COM4 in the array (they should both just be identical strings?), so the Select field doesn't recognise it as the same option and cannot keep the same value selected, or COM4 is the same both before and after and there's a knockout bug.
By the way - I'm developing this on a Windows laptop and an FTDI usb to serial adapter, currently without any sensor plugged in. I'll add actual sensors into the mix once I have the settings, threading, management nailed.