Я мог бы подумать об одной основной причине: прозрачность. Ни вы, ни будущий разработчик, ни даже ваша IDE не можете быть на 100% уверены, какая функция будет вызвана в конце. Это шаг к созданию не поддерживаемого кода спагетти. Мой совет: не делайте этого!
Что плохого в том, чтобы постоянно использовать функции mb_
? Я использую другие функции, только если мне явно нужно работать с байтами вместо символов. Вы, как программист, должны знать, нужно ли вам выполнять действие с отдельными байтами или символами.
Если вас беспокоит, что расширение mbstring может не загружаться, вы можете добавить проверку для этого в своем коде.
if (!extension_loaded('mbstring')) {
throw new \Exception('MBString is not loaded as an extension!');
}