I think I figured out the solution to the Lapras problem.
I'm gonna use the Articuno script in FireRed as an example
The pointer I marked in red points to an event that will happen if you defeat the Pokemon.
The pointer I marked in blue points to an event that will happen if you flee from the Pokemon.
However, there is still an important second part to the Articuno script.
The second part uses the level script type in the map header:
Even though Nintendo coded it so that the pointer just points to a script that does nothing but return, you can add whatever scripts you want there. Anyways, the
is what causes the sprite to disappear after catching it.