Klienten ved ikke, at det er en CSV-fil (det er trods alt bare tekst!).
Prøv at tilføje dette FØR ethvert output (øverst i dit script):
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
Grundlæggende fortæller du klienten/browseren, at de data, du vil sende en CSV-fil.
Det burde virke.
Du kan finde mere information om overskrifter der:http://php.net/manual/ en/function.header.php