Por que a classe Viagem tem de herdar de NSObject?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Por que a classe Viagem tem de herdar de NSObject?
Oi Luiz, tudo bem?
Na verdade não "precisa" herdar de NSObject.

Quando criamos um arquivo através da opção Cocoa Touch Class precisamos especificar qual é o tipo de arquivo que estamos criando (Classe, ViewController, TableViewCell).
Portanto nesse caso, se quisermos criar uma classe através da opção Cocoa Touch Class, precisamos selecionar NSObject que vem do objective C e representa uma Classe:

Porém se escolher criar uma classe através da opção Swift File basta colocar um nome para o arquivo:
Repare que o arquivo é criado vazio.
Para criar uma classe basta adicionarmos:

As duas formas estão corretas.
Espero ter ajudado.