Porque para el SQL, el contenido de un campo, por más que estén separados por commas, no componen valores distintos, en
un sólo valor, y la cadena "azul, cafe, rojo" no es igual a "azul, cafe, rojo". El caracter comodin (%) sólo le dice al MySQL que puede reemplazar valores al inicio o al final en tu caso. Pero nada dice de los caracteres intermedios.
Tu problema viene por dos lados.
Por un lado muestra un serio defecto de diseño, porque tienes campos sin normalizar, ya que el que estás analizando es un campo multivaluado, lo que viola el modelo relacional (ni siquiera estaría en 1FN). Normalizar la tabla ayudaría a la hora de reconocer los valores en consultas mucho más simples de elaborar.
Por otro lado, si lo que deseas es realizar una consulta sobre varios valores, cada uno de esos valores debe ser incluido en el WHERE separadamente, usando AND u OR según se necesite. Esto implica que deberás usar más de una variable o parámetro en la consulta.
Algo así: