no entiendo de donde viene el cambio de los % por = ...
según este caso...
Código PHP:
urldecode('%E9'); // é
por lo cual, resulta que el patrón a seguir es =[A-Z][0-9] ...
Código PHP:
echo urldecode(preg_replace('/=([A-Z][0-9])/', '%\\1', '=?iso-8859-1?Q?Clase_de_ingl=E9s?=3'));
// =?iso-8859-1?Q?Clase_de_inglés?=3
si, lo estuve probando y así es.... bingo!