so the problem occurs when y is an instance variable, while it works fine with a local variable (although if you try the code above in a workspace without declaring the | y | in the first line, it fails)
Of course this depends on the exact implementation of your continuation. If this the one of Seaside, then it captures temp-variables and arguments only.
If you want to translate your Scheme example in Smalltalk you need to declare your let-variables as temps, otherwise they are not on the execution stack and thus not captured and restored by the Seaside continuation.
Cheers, Lukas