I don't get it: why would a thin layer on top of stdio be bad? Seems much less work than reimplementing stdio.
Because by layering stuff you lose performance. Example: fgets() is often implemented in a way that is faster than you can ever do yourself with portable code. (Because fgets() can peek in the buffer and see if there's a \n somewhere ahead, using memcmp() -- and if this succeeds, it can use memcpy(). You can't do that yourself - only the stdio implementation can. And this is not a hypothetical situation -- Tim used fgets() for a significant speed-up of readline() in 2.1.
But if we want to use our own line end convention, we can't use fgets() any more, so we lose big.
--Guido van Rossum (home page: http://www.python.org/%7Eguido/)