Como a documentação do MySQL em chaves estrangeiras indica :
Portanto, se você usar o innodb, o MySQL não permitirá que você crie uma chave estrangeira em um campo que não seja o campo mais à esquerda em um índice.
O motivo é que, em um índice de várias colunas, você não pode pesquisar um valor com base em um campo que não seja o mais à esquerda, portanto, o índice não pode ser usado para pesquisar rapidamente o valor de uma verificação de chave estrangeira.
Esse comportamento dos índices do MySQL é descrito na documentação do MySQL em índices de várias colunas :