Tienes un error de diseño/lógica, porque los patrones no deben formar parte de las sustituciones, porque TAM va a ser reemplazado para 'TAM MEDIANA' y 'TAM PEQUEÑA'.
Por otra parte, no creo necesario el uso de preg_replace() si con str_replace() puedes lograrlo.
Suponiendo que los reemplazos no contengan alguna cadena del patrón, invirtiendo el orden de los elementos puede funcionar.
Código PHP:
Ver original$patrones = array('TAMP', 'TAMM', 'TAM'); $reemplazos = array('PEQUEÑA', 'MEDIANA', 'OTRA?');