Well, AFAIR I did so for performance and thread safety. Remember that CEditLog was intended to be used by multiple threads simultaneously that may render messages with a very high frequency. Therefore it is necessary that the streaming of a block of data (lets say a line) takes place quickly and uninterruptable, otherwise the output would be slow and messy, as messages from different threads get mixed up.
Both, efficiency and atomicity is ensured by the own xsputn() implementation, which protects the access to the shared buffer by a critical section and copies chunks of data blockwise instead of char by char. AFAIR.
(Hey, this page is worth looking! You can find some free and handy NT tools there )