A mi entender, lo más probable es un defecto en la conversión de los caracteres que se ingresan, respecto de los que los que se envían a MySQL.
Es, supongo, algo semejante a lo que ocurriría si en lugar de recibir "é", la consulta recibiese "é", el resultado sería completamente diferente.
En parte es una suposición, pero es muy posible que el problema se esté produciendo a ese nivel.
De todos modos, como aclaración, la prueba realizada la hice con phpMyAdmin, MySQL Workbench, MySQL Query Bowser y con la consola de MySQL, y sólo funciona bien con la consola.
Ahora bien, si vamos al manual, la explicación de todo este enredo se vuelve muy, pero muy simple:
Cita: REGEXP y RLIKE usan el conjunto de caracteres actual (ISO-8859-1 Latin1 por defecto) al decidir el tipo de un carácter. Atención: Estos operadores no pueden trabajar con múltiples bytes.
Al ser los caracteres mencionados, utf8, es posible que se generen conflictos y que eso explique un comportamiento tan anómalo.
Yo creo que si en lugar de hacer esto tan retorcido, simplemente cusa otras posibilidades, no debería tener problemas:
Código MySQL:
Ver original+--------+
| prueba |
+--------+
| 1 |
+--------+
Creo que el tema anda por allí.