Actually the question should be why does
public static void WriteLine(string value)
Console.WriteLine is a static method.
Console.Out is a static object that can get passed as a parameter to any method that takes a
TextWriter, and that method could call the non-static member method
An example where this would be useful is some sort of customizable logging routines, where you might want to send the output to
Console.Error) or nowhere (
System.IO.TextWriter.Null), or anything else based on some runtime condition.