Отличие stderr от stdout изначально задумывалось в том, чтобы как ни перенаправляй выходной поток, ошибки всегда вылезут на экран. Это работало в однозадачной MS-DOS, это работает и сейчас в простых скриптах.
Однако сейчас особенность sterr стала его же собственной проблемой. Во первых, с целью незагромождения оконного интерфейса, часто скрипты запускаются в скрытом окне. У WSHShell.run даже есть специальная опция, позволяющая это сделать. Во вторых скрипты часто запускаются по какому-либо событию (по расписанию или сигналу по сети) в отдельном консольном окне, которое сразу после окончания работы закрываются.
Хоть какая-либо попытка перенаправить выходной поток скрипта в какой-нибудь файл-журнал оборачивается крахом.
Последнее мое столкновение с данной проблемой была с РНР. Казалось бы в РНР есть функция set_error_handler, позволяющая все сообщения об ошибках выводить через echo в stdout. Но кто бы мог подумать, что разработчики библиотеки для работы с COM проигнорируют наличие этой функции и все сообщения об ошибках будут все равно выдавать в sterr.
Так что мое мнение: stderr – анахронизм, по крайней мере в Windows