--init-file é processado primeiro e, em seguida, o conteúdo de ${HISTFILE:-$HOME/.bash_history} é carregado normalmente. Se esse arquivo contiver $HISTSIZE entradas, como geralmente será o caso, a entrada carregada por history -r tmp será removida do início da lista do histórico e perdida.
As variantes a seguir funcionam para mim (na versão 4.1.2 do CentOS):
bash --init-file <(echo history -r temp; echo HISTFILE=/dev/null)
# in new shell history contains only the line(s) from temp
bash --init-file <(echo history -r temp; echo let HISTSIZE+=100)
# in new shell history contains the line(s) from temp THEN .bash_history