Como as chaves estrangeiras devem corresponder ao tipo de dados da coluna a que fazem referência, faz sentido que a alteração do tipo de dados de uma coluna possa perturbar a chave estrangeira que a referencia.
Parece que o MySQL tem uma proteção contra isso e nega uma tentativa de MODIFICAR a coluna. Mas não é inteligente o suficiente para verificar se a modificação específica que você está fazendo irá de fato alterar o tipo de dados. Apenas nega qualquer tentativa de modificar essa coluna.
Você pode contornar isso desativando temporariamente as verificações de chave estrangeira. Eu recriei sua tabela e confirmei:
mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
ERROR 1833 (HY000): Cannot change column 'person_id': used in a foreign key constraint 'favorite_food_ibfk_1' of table 'test.favorite_food'
mysql> set foreign_key_checks=0;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> set foreign_key_checks=1;