Não há diferença. hostname e uname -n geram as mesmas informações. Ambos os obtêm da chamada de sistema uname() .
Uma diferença é que o comando hostname pode ser usado para definir o nome do host, bem como para obtê-lo. uname não pode fazer isso. (Normalmente isso é feito apenas uma vez, no início do processo de inicialização!)