Ya encontré la solución al problema. Por si a alguien le sirve esta es la forma correcta de escribir el archivo:
Código:
$output = fopen( 'php://temp/maxmemory:'. (12*1024*1024) , 'r+' );
fputcsv($output, Aqui el array a escribir,";");
rewind($output);
$buffer=stream_get_contents($output);
fclose($output);
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
header('Content-Length: '. strlen($buffer));
echo $buffer;
exit;
Se puede dar por solucionado.