Quando você executa um comando como um argumento para o ssh, o comando é executado diretamente pelo sshd; o shell não está envolvido.
Você pode verificar isso usando algo como o seguinte:
ssh b @ B pstree
É o shell (bash neste caso) que extrai o seu .bash_profile, e só o faz se o shell for invocado como um shell de login, ou se o shell foi invocado com a opção --login (veja o bash man page; procure por INVOCATION). O ambiente que você obtém ao executar um comando diretamente é definido por coisas como sshd e PAM quando você faz o login.
Assim, se você quer seu .bash_profile, você precisa executá-lo sob o shell e você precisa rodar o shell como um shell interativo ou de login, assim:
ssh b @ B "bash -l -c 'env'"
Isso deve gerar a saída desejada. A única coisa a observar é que a citação fica complicada rapidamente. Note que no Linux, pelo menos,
ssh b @ B bash -l -c 'env'
não lhe dará um shell de login (não sei por que).