When you assign value to ScriptText the following actions take place. First, if Statements property had been used before to obtain a SqlStatementCollection object, this collection gets cleared and no SqlStatement objects associated with obsolete script can be used. Second, DbScript positions itself on the first statement in the script, thus next invocation of ExecuteNext method will execute the first SQL statement regardless of whether it had been called before.
Note that large scripts a better handled with Open method.