Muitos firewalls descartam conexões de saída que não estão nas portas 80 ou 443 (http e https); alguns até descartam conexões com as portas que não são HTTP (S). O FTP pode ou não ser permitido, para não falar dos modos ativo / PASV.
Além disso, o HTTP / 1.1 permite solicitações parciais muito melhores ("envie apenas do byte 123456 até o final do arquivo"), solicitações condicionais e cache ("envie apenas se o conteúdo for alterado / se a data da última modificação for alterada") e a compactação de conteúdo (gzip).
HTTP é muito mais fácil de usar através de um proxy.
Pela minha evidência anedótica, o HTTP é mais fácil de trabalhar com conexões descartadas / lentas / escamosas; por exemplo, não é necessário (re) estabelecer uma sessão de login antes de (re) iniciar a transferência.
OTOH, o HTTP é sem estado, então você teria que fazer autenticação e criar uma trilha de "quem fez o que quando".
A única diferença de velocidade que notei é a transferência de muitos arquivos pequenos: o HTTP com pipelining é mais rápido (reduz as viagens de ida e volta, principalmente nas redes de alta latência).
Observe que o HTTP / 2 oferece ainda mais otimizações, enquanto o protocolo FTP não vê nenhuma atualização há décadas (e mesmo as extensões ao FTP têm aceitação insignificante pelos usuários). Portanto, a menos que você esteja transferindo arquivos através de uma máquina do tempo, o HTTP parece ter vencido.
(Tangencialmente: existem protocolos mais adequados para transferência de arquivos, como rsync
ou BitTorrent, mas eles não têm tanto compartilhamento de ideias, enquanto HTTP é Everywhere ™)