Diferença entre SystemInformation.ComputerName, Environment.MachineName e Net.Dns.GetHostName

Pelo que tenho visto, na documentação do MSDN e em outras questões aqui no SO, há quatro maneiras de obter o nome da máquina local.

Environment.MachineName;
System.Net.Dns.GetHostName();
System.Windows.Forms.SystemInformation.ComputerName;
System.Environment.GetEnvironmentVariable("COMPUTERNAME");

Existe uma diferença em quais métodos retornarão ou todos eles retornarão exatamente a mesma coisa o tempo todo?

Nota: eu vi pela primeira vez a lista neste post:Como obtenho o nome da máquina local?

questionAnswers(3)

yourAnswerToTheQuestion