Auf jeden Fall die direkt verlinkte Variante.
PHP schreibt alles in den Ausgabepuffer (php://output), das frisst einiges an Ressourcen und ist auch merklich langsamer als die direkte Verlinkung.
Außerdem wird beim PHP-Stream nicht der Fortschritt angezeigt sondern einfach nur irgendwas, weil der User keine Ahnung hat, wie viel Daten da noch kommen (es sei denn du sendest den Content-Lenght-Header).