Why wouldn't you just skip the private address altogether and assign a public one if the host needs to connect to a network?
Porque não há endereços públicos suficientes no IP versão 4 para dar a cada dispositivo conectado à Internet um endereço exclusivo. É por isso que a versão 6 do IP usa mais bits para o intervalo de endereços e tem mais endereços.
Os blocos de endereços particulares não devem ser roteados pela Internet pública (isso é o que os torna "privados"). Como há apenas três blocos privados com um número relativamente pequeno de endereços dentro deles, eles têm a garantia de serem reutilizados por qualquer pessoa e todos que possuam uma rede privada (os endereços privados SÓ precisam ser unidos em uma rede privada, mas outra rede privada pode reutilize os mesmos endereços). Então você não pode simplesmente colocar os blocos de endereços privados "lá fora" - eles entrarão em conflito com alguém que esteja usando o mesmo bloco em outro lugar.
Então é por isso que o NAT é necessário.
Para responder diretamente à sua última declaração, se você tiver endereços públicos suficientes disponíveis para você, não será necessário NAT para enviar e receber tráfego. O NAT não é necessário por esse motivo se você não estiver tentando "salvar" endereços IP. Para completar, direi o seguinte: algumas pessoas confiam nos seguintes efeitos colaterais do NAT por motivos de segurança e isso pode ser um motivo para optar por usá-lo, mesmo se você tiver endereços IP públicos suficientes:
- os usuários por trás de um NAT não podem receber conexões de entrada, a menos que o tráfego de entrada seja explicitamente encaminhado para eles pelo roteador
- já que o tráfego de saída do NAT parece para sistemas externos que vem do IP do roteador, isso oculta detalhes das máquinas por trás do NAT de sistemas externos, ou seja, quantas máquinas, seus IPs privados, etc.
(Pessoalmente eu não confiaria em um NAT para segurança se eu não precisasse disso, mas YMMV)