На самом деле, все предельно просто.
Как известно, в Python строки хранятся в UTF-32, то есть по одному code point'у на один элемент строки. Таким образом, переворот строки происходит на уровне code point'ов.
Но отображение текста работает хитрее — каждый видимый на экране символ необязательно состоит из одного code point'а, может из нескольких. Такая совокупность code point'ов, образующая один видимый символ, называется extended grapheme cluster. Вычисление границ extended grapheme cluster происходит по определенному сложному алгоритму (который еще и дополняется при выходе новых версий Юникода!).
Теперь вернемся к нашим
Например, строка
'🇧🇬🇦🇲' состоит из четырех таких «букв»: BGAM (или 🇧 🇬 🇦 🇲, если у вас «буквы» умеют отображаться по отдельности). При реверсе мы получаем MAGB, где MA составляет 🇲🇦 (Марокко), а GB — 🇬🇧 (Британию)Таким образом, загадка разгадана :)