self is literally just a reference to The Current Method's Owner, such as aIsabelaScript, no matter the name. It could refer to an instance that was dynamically allocated with new:.
How it works in conjunction with movers is this: the Motion class, from which MoveTo descends, has this method, (method (init theClient theX theY theCaller). There's some temps there too but I don't care. When you do Actor::setMotion, you specify a class name and a bunch of arguments. setMotion: cleans up the previous mover if any, instantiates a new one of the given class, and passes the rest of the arguments to its init:. That then notices theCaller is actually given (or not) and remembers it in its own caller property. If none was given (you only said where to go), caller is set to null.
Afterwards, every cycle, Isabelle will notice her mover property is non-null (it's set to that new MoveTo instance) and call its doit:. That, in turn, will eventually realize it's arrived and, having a non-null caller property, calls its cue:. And because you're expected to specify a Script (or rather anything that responds to cue:), well... yeah.
Note that it doesn't have to be self. One script can have a mover or cycler cue another script.