That they may cause runtime (or compile time) errors on some compilers is reason enough not to use them except as a last resort. Any function provided by the libc to generate these values is better than an expression which we can merely hope produce the desired value (and which can crash the pike process on startup otherwise). If you know of any more such functions in addition to the ones we already support, feel free to add them.
As for the hardwired IEEE variants, we need to check for IEEE format anyway, since %F gets optimized if we have it (which is usually the case), so why not use the result to get something which is bound to work on such systems?