OK I fixed it for my situation, not sure it is always going to be correct or not, only progAndy can answer that.
On line 42 of the CSV.au3 library there is this line:
Local $sPattern = StringReplace(StringReplace('(?m)(?:^|[,])h*(["](?:[^"]|["]{2})*["]|[^,rn]*)(v+)?',',', $srDelimiters, 0, 1),'"', $srQuote, 0, 1)
It uses the h (zero-length string). However this doesn't seem to be working on my system (64 bit Win7 professional). There is a fix though:
Local $sPattern = StringReplace(StringReplace('(?m)(?:^|[,])>*(["](?:[^"]|["]{2})*["]|[^,rn]*)(v+)?',',', $srDelimiters, 0, 1),'"', $srQuote, 0, 1)
Use the > (also zero-length string). This works fine and exactly as I expected the output. Now I have a blank cell in between where it should be.
Hope this helps someone.
James