В Обероне я явно использую POINTER TO ARRAY. И я уже отвечаю за то, как с ним работаю.
Если я присваиваю ptr1 := ptr2, то я, естественно, получаю одну строку и два указателя на неё. А если мне надо копировать, я должен сам за это отвечать (NEW, s2^ := s1$).
В Delphi же это сделано неявно. Т.е. после s2 := s1 это формально разные объекты (я могу их изменять независимо), в силу же оптимизации s2 и s1 сначала указывают на один объект. И только по необходимости когда-то рантайм разведёт их.