Еще раз вычислить длину для UTF-8 это O(N) задача, если она не закеширована, а если стоки мутабельны то это практически всегда и гарантированно придется делать. Что бы достать n-й символ из UTF-8 нужно его декодировать - это довольно недешевая операция. Для UCS-2 это O(1) и никакой амортизации при доставании символа соответственно)
А теперь скажи мне, зачем тебе нужен произвольный доступ по индексу