Al utilizar la función eval con la cadena, en tu caso, ocurre esto:
Código PHP:
//Esta es la línea original:
eval("\$oferta1=array($linea[$i]);");
//Se reemplazan las variables en la cadena por sus respectivos valores.
//O sea que antes de ejecutarse el eval la cadena se reemplaza así:
//Primero se reemplaza $i:
eval("\$oferta1=array($linea[1]);");
//Luego se reemplaza $linea[1]:
eval("\$oferta1=array(titulo1=>'automotores',subtitulo1=>'ford');");
//$oferta1 no se reemplaza porque tiene la contrabarra (no se trata como variable).
//O sea que al poner:
eval("\$oferta1=array($linea[$i]);");
//Pasa exactamente lo mismo que si pusieras simplemente:
$oferta1=array(titulo1=>'automotores',subtitulo1=>'ford');
//O sea, creas el array llamado "$oferta1" que tiene 2 índices: (titulo1 y subtitulo1)
Espero que se haya entendido.
Saludos