O comando su inicia outro shell como root (ou quem, se você fornecer um nome de usuário e senha corretos). Este shell obtém todas as variáveis de ambiente normais, o que obviamente inclui as variáveis HTTP_PROXY e FTP_PROXY. Assim funciona.
O comando sudo REMOVE TODAS as variáveis de ambiente, exceto para um subconjunto especificamente escolhido ... o que obviamente NÃO inclui o HTTP_PROXY & Variáveis FTP_PROXY, assim seus comandos falham.
Você pode fazer o sudo manter as variáveis * _PROXY editando o arquivo de configuração do sudoers, usando o comando visudo (é claro).
Adicionando o seguinte fará sudo manter os valores de HTTP_PROXY & FTP_PROXY:
Defaults env_keep += "http_proxy ftp_proxy https_proxy HTTP_PROXY FTP_PROXY HTTPS_PROXY"
Por coincidência, se você adicionar DISPLAY & HOME para aquela lista, você pode usar programas gui com sudo também (eles precisam da variável DISPLAY para conectar)
Defaults env_keep += "DISPLAY HOME"
Você pode até mesmo adicionar essas duas linhas, assim. (A + = é a chave aqui) Lembre-se de adicionar essas linhas ao final do arquivo, já que nas primeiras poucas linhas ele geralmente define a variável ' env_keep ' com um straight ' = ', que apaga qualquer valor anterior.