O sistema precisa acompanhar o diretório atual de todos os processos, pois os processos não poderiam usar caminhos relativos para nada (incluindo, por exemplo, arquivo aberto ou stat e alteração de diretórios - o que significa chdir("..")
se você não usa? t track foi o processo atualmente se senta?).
Há também o problema de que, sem rastrear essas informações, o kernel não seria capaz de verificar se um processo está dentro de um determinado ponto de montagem. Então, você estaria sujeito a desmontar acidentalmente um sistema de arquivos de um processo, levando a um estado inconsistente.
Para sua segunda pergunta: pense em links físicos. Eles seriam muito mais difíceis de implementar corretamente e com segurança se os dados do inode estivessem no próprio diretório "estrutura". Muito mais fácil ter essencialmente ponteiros para os inodes na estrutura de diretório, torna a adição ou remoção de links para um determinado inode bem simples.