Out of curiosity, i've downloaded 14.4.1 and played with it a bit.
The sad thing is that you are correct.
The instruction
>sox -S testfloat.wav -t wav -e floating-point tmp.wav
clips the output just like you say, even when the input file is in floating point, and i am asking the output to be floating point (which is is, but clipped).
Adding -G didn't change anything (i guess that's for when it applies multiple effects).
Finally, i tried the following:
>sox -S testfloat.wav -t sox -e floating-point tmp.wav
And that generates a 32bit *integer* file.
So it's like sox works internally in 32bit integer, although that's sort of incompatible with having a "clip guard".
Not even a gain operation on the input file is free of that:
>sox -v 0.1 -S testfloat.wav -t wav -e floating-point tmp.wav
(i.e. reduce the volume at 10% on the source)
Reduces the volume, but after clipping the input.
(again, same result with or without -G)
I tried explicitely a float format, but still the same result:
>sox -S -t f32 -e floating-point -b 32 --endian little -c 2 -r 44100 testfloat-raw.wav -t f32 -e floating-point -b 32 --endian little -c 2
-r 44100 tmp.wav