Isso não faz o que você pensa:
sudo echo $http_proxy
Com isso, $http_proxy é expandido pelo shell antes sudo ser chamado, então ele pega seu próprio ambiente.
Um su simples (sem - , -l ou --login ) também mantém (a maioria) o ambiente intacto, portanto, as configurações de proxy são herdadas.
sudo não preserva o ambiente por padrão. Você poderia tentar:
sudo -E curl ...
(para preservar todo o ambiente, se você puder fazer isso), ou
sudo http_proxy=$http_proxy curl ...
para passar apenas http_proxy (mais seguro).