I am embarrassed. Now it is time for me to thank you. My understanding of the write function was flawed
The Serial Monitor shows in all three cases the string I wanted to send (which was also a reason why I coulden't understand the different results)
That works for me to, now that I actually tested. I am sorry if my bogus answer caused confusion.
I understand the function better now. If the array is a null terminated array (as 2.1 and 2.2 are) write can know the length of the array so no problem. 2.3 is not null terminated (not a char array) so must have the length included.