Not sure. You can try to select/group from the table with collation, that should show you offending words that map into the same key in utf8mb4_unicode_ci, but not in utf8mb4_general_ci
SELECT id_shop, id_lang, `word` COLLATE utf8mb4_unicode_ci, COUNT(*), GROUP_CONCAT(id_word) as duplicate_ids
FROM ps_search_word
GROUP BY id_shop, id_lang, `word` COLLATE utf8mb4_unicode_ci
HAVING COUNT(*) > 1;