Output /eventually/ maps to stdout. However while every occurrence of (per-thread) Output maps to the same (per-process) stdout you can't say the reverse since the per-thread Output files operate aynchronously (which is, after all, the whole idea of having threads).
Although I'm not a 100 percent sure (never dug into the details), I doubt that input,output files have a special treatment or separate copies for threads.
The standard I/O Text variables are simply declared as threadvar, that's all that's needed for "thread safety".
... and you had already explicitly said that there's per-thread buffering, so I suspect that somebody's posted without reading the whole topic.
As I said, not a 100% sure and I doubt...
And as long the PascalDragon posts are almost always informative and right, I find yours at times somewhat hazy and sardonic.
Now, with that
threadvar clarification, I dug further in RTL to find that there is not only separate thread copies of input and output, but also additional SysInitStdIO/SysFlushStdIO at the each thread creation and cleanup.
Hope everybody will learn something new here.