Seus problemas com .bashrc não estão relacionados. .profile precisa ser compatível com todos os shells compatíveis com sh , enquanto é claro que .bashrc é específico para Bash e geralmente não deve ser originado por outros shells.
Geralmente, coloque as coisas que você quer compartilhar entre os shells em .profile , e certifique-se de fazer fonte dos arquivos de inicialização de seus outros shells (a menos que eles já façam isso padrão).
Obviamente, você precisa ter certeza de evitar o código que se comporta de maneira diferente em shells diferentes (a falta de cotações está bem em Zsh, mas um problema em shells compatíveis com Bourne, por exemplo).
Quanto à parte "por que" da sua pergunta, é assim que as configurações do seu .profile estão disponíveis para os programas executados a partir da sua sessão GUI, não apenas pelos que você executa dentro de um shell (ou talvez deveria dizer shell "tradicional", e considerar a sua sessão GUI como um shell "não-tradicional".