Comme l'indique la documentation MySQL sur les clés étrangères :
Ainsi, si vous utilisez innodb, MySQL ne vous permet pas de créer une clé étrangère sur un champ qui n'est pas le champ le plus à gauche dans un index.
La raison en est que dans un index multi-colonnes, vous ne pouvez pas rechercher une valeur basée sur un champ qui n'est pas le plus à gauche. Par conséquent, l'index ne peut pas être utilisé pour rechercher rapidement la valeur pour une vérification de clé étrangère.
Ce comportement des index MySQL est décrit dans la documentation MySQL sur index multi-colonnes :