Я уже указал на проблему Дельфы - оптимизацию строк. Когда Вы присваиваете s1 := s2, реального копирования не происходит. И даже, по-моему, при строковых операциях куски общими могут оставаться...
А реально разделение будет выполнено при записи. А иногда (если не того уровня средство применили, которое про оптимизацию не знает) можно такую петрушку получить, если изменяете строку s1, и вдруг побочные эффекты на совершенно посторонние строки идут.