debido a que la expresión regular de Oracle mueve la posición de coincidencia hacia adelante después de una coincidencia, lamentablemente debe hacer la expresión regular el doble de veces
regexp_replace(regexp_replace(col1,'(^|,)(SL)(\W|$)','\1\3',1,0,'imn') ,'(^|,)(SL)(\W|$)','\1\3',1,0,'imn')