Если тебе нужна копия объекта, но ты не уверен, что когда-либо будешь ее менять -- объект можно не копировать. Для этого и сущестуют такие оптимизации. Копия будет создаваться только при изменении
const a = "asd"; const b = a; print(a); // Используется буфер а print(b); // Используется буфер а, строка одна и та же b[1] = "q"; print(a); // Используется буфер а print(b); // Используется буфер b, строка тихонько скопировалась
Если ты берешь подстроку, но не модифицируешь ее -- логично просто взять ссылку на первый элемент и длину, и использовать буфер от старой строки. Если ее надо будет поменять, как в примере выше -- придется копировать