El problema es que no debes de usar ob_start() porque estas "omitiendo" el error, tienes que solucionarlo, ve esta FAQ:
http://www.forosdelweb.com/2037876-post179.html
La razón por la que baja como archivos_nombre.ext es porque tu mismo le pones esa nomenclatura en esta parte del código:
Código php:
Ver originalheader( "Content-Disposition: attachment; filename=".$archivo."");
Saludos.