Después de investigar un poco os dejo aquí mi propia solución. Funciona bien, así que creo que es una buena respuesta.
Para eliminar las apariciones de los nombres del array en la cadena en PHP primero voy a dividir la cadena original en un array de nombres.
Luego voy a crear un nuevo array excluyendo los nombres que están presentes en el array dado y por último volver a unir el array resultante en una cadena con los nombres separados por comas.
<?php
$cadena = "nombre, nombre2, otro nombre";
$nombres_a_eliminar = ['nombre'];
$lista_nombres = array_map('trim', explode(',', $cadena));
// aqui es donde se crea el un nuevo array excluyendo los nombres a eliminar, es la parte un poco más complicada
$nueva_lista_nombres = array_filter($lista_nombres, function($nombre) use ($nombres_a_eliminar) {
return !in_array($nombre, $nombres_a_eliminar);
});
$nueva_cadena = implode(', ', $nueva_lista_nombres);
echo $nueva_cadena;
?>
Lo que he aprendido es que array_map('trim', $array)` elimina los posibles espacios en blanco alrededor de cada nombre.
Luego con array_filter($array, $callback)
se crea un nuevo array utilizando una función de callback, parecido a como se hace en javascript.
Por útimo, implode(', ', $array)
vuelve a unir el array en una cadena, separando los nombres por comas y espacios.