I'm not trying to argue here; if you decide on a "no overloading" policy in the end, then so be it - it's just that all of the problems raised so far seem solvable. :o)
The perspective of having the string functions overloaded is very tempting, as otherwise we'll have to make our own wrappers/overloads for Smarty functions, and for any other pieces of third-party packages we use. String functions overloading would take care of everything at once and should be relatively future-proof, while each new versions of Smarty (and other packages) could require rewriting of the fixes.
We need to create our own wrappers anyway, since we should not make mbstring a requirement for Drupal! Supporting mbstring too might turn our to be more performant in some cases than user defined PHP functions, but then again the special case checks all around Drupal might complicate our code significantly and might hurt some performance. Goba