Hola mi amigo.
No estás haciendo nada mál, lo que sucede que la intención del código que puse de ejemplo es precisamente
forzar un error por falta de liberación de recursos. Es decir que nada correcto saldrá si nos basamos en ese código.
Ahora si me limito al código que adjuntaste, el problema es que en Button1Click se crean un millon de instancias de
TStrings y en Button2Click sólo se puede liberar una.
Saludos.