Bueno, addcslashes pudiera ser útil si hay alguna razón en especial por la cual se escapa, en este caso, %_ y dado que mysql_real_escape_string no escapa ese caracter, se podría preguntar ¿hay alguna razón para escaparlo?
Otra cosa (aunque muy particular) es que yo sacaría stripslashes del IF
Supongamos que, en efecto, magic quotes está activo y el código de escape será usado en una variable que obtiene su valor de un get, post o cookie, en cuyo dicho valores vendrán escapados, es decir:
Código PHP:
$var = $_GET['algo']; // $_GET['algo'] supongamos que es "Esto es ' una prueba"
En ese caso, $var tendría "Esto es \' una prueba".
Se utiliza stripslashes y genera "Esto es ' una prueba" y luego al usar mysql_real_escape_string vuelve a ser "Esto es \' una prueba"
Ahora bien, ¿y si magic quotes no está activo? ¿y si lo que se envía ya tiene un backslash? (porque lo agregó el usuario o algún proxy por pura maldad para probar qué ocurriría)
En dicho caso, el IF es false y por ende stripslashes no se llama. Digamos entonces que la cadena que se envió es en realidad "Esto es \' una prueba"
Dado que stripslashes no se ejecutaría (porque magic quotes no está activo), mysql_real_escape_string generaría entonces "Esto es \\\' una prueba"
Si estás usando stripslashes para controlar los caracteres que puedan llegar escapados antes de enviarlos a mysql_real_escape_string, entonces realmente no le veo mucho sentido a que sea implementado dentro de un IF que pueda dar como resultado false, más aún cuando hoy día la mayoría utiliza versiones de PHP que ya tienen magic quotes inactivo.
En ese caso, sería mejor usar stripslashes esté o no activo magic quotes