Found the problem. Questions is should it operate this way or not.
Issue is that when I build the select.option list in the php eval code I set the first entry to a "Please select" with a value of 0 (zero). The rest of the select.options come from the DB. What is happening is that the first option has a type of int(0) whereas the rest of the values are type string. Normally this should not be a problem.
However, in components/com_fabrik/models/element.php at line 4100 (or thereabouts depending on githjub version) is a statement $key = array_search($v, $values); when the values are of mixed type as a result of the select.options values and this function is returning an integer zero ($v is a text string at this point and is the select text). As a result when displaying the table in list view the element is always showing the first item of the select.option list which in my case is "Please select".
I can correct this by changing the zero to a string of zero ('0'), or if I force the array_search to strict by adding true as the third param of the call then it works for me.
Which is the correct way to solve this? I imagine others will stumble into this at some point.