Depois de perder quase toda a minha tarde tentando descobrir por que isso estava acontecendo, finalmente encontrei uma solução alternativa.
Como Ben disse antes, este é um bug relacionado ao FileVault. Quando você usa o FileVault, o banco de dados do LaunchServices não é lido corretamente após a reinicialização. Já que é onde suas associações (arquivos e URLs) são armazenadas, todas elas são revertidas para o padrão do sistema. A exclusão e a reconstrução do banco de dados do LaunchServices não funcionariam porque as configurações estão armazenadas corretamente, mas não são lidas como deveriam após a reinicialização.
Claro, eu poderia desativar o FileVault, mas isso não é aceitável para mim. Eu tenho muitos dados sensatos no meu MacBook e moro no Brasil, onde o risco de ter seu laptop roubado é muito grande. Então, eu precisava de outra maneira de resolver esse problema.
Felizmente, depois de navegar em um monte de páginas relacionadas ao assunto, encontrei um script chamado "GoodCompany", escrito por um cara chamado Martin Kopischke. Citando sua descrição:
GoodCompany is a shell script (with some accompanying files) to work around the annoying FileVault bug which makes Launch Services ignore user application bindings. If OS X seems to forget your default browser, mailer, RSS reader or editor for certain filetypes after each reboot and you are using FileVault, GoodCompany is for you.
Você pode fazer o download aqui . Basta descompactar o arquivo ZIP, colocá-lo em uma pasta dentro de sua casa e executá-lo com a ação "enable", para que ele seja configurado para ser executado após cada login. Leia a documentação anexa para mais detalhes.
Eu apenas tentei e, embora não seja exatamente uma "solução" para o problema, é uma ótima solução alternativa. É melhor do que desativar o FileVault.