Eles podem fornecer funcionalmente perto da mesma coisa, mas parece que 'sudo -i' é mais leve e mantém algumas referências úteis no seu ambiente.
Você pode ver os processos extras observando 'ps auxf' (f dá a você uma visão da floresta)
sudo -i produz esta árvore de processos
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4675 0.6 0.0 19512 2260 pts/0 S+ 23:42 0:00 | \_ -bash
sudo su - produz esta árvore de processos
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4687 0.5 0.0 43256 1488 pts/0 S 23:42 0:00 | \_ su -
root 4688 0.5 0.0 19508 2252 pts/0 S+ 23:42 0:00 | \_ -su
Note que eles estão começando do mesmo processo bash pid, 4482, mas esse su - parece gerar outra etapa.
Seu primeiro 'sudo' já está elevando seu nível de acesso para root. Executar o su sem especificar um nome de usuário dentro do sudo altera o usuário atual para o root duas vezes.
Outra maneira de investigar isso é executando os dois comandos com strace -f.
strace -f -o sudoi sudo -i
vs
strace -f -o sudosu sudo su -
Se você diferenciar esses dois straces, você verá mais exeves sendo executadas para o sudo su -.
Mais uma coisa.
sudo -i mantém as variáveis de ambiente extras definidas pelo SUDO.
SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000
sudo su-clobbers essas variáveis.