Depends on the game engine. Most of the time return handling was't needed as after it hits string end, it will continue as if it had hit the original string's end. On some games it has been necessary to return to the original location and seek (or add new relative offset from insertion) to original string end. But that has only been necessary when I am forced to hijack the original variables and the engine heavily relies on byte counting during the whole process. Usually, I am able to inject the new jump, use new variables, and return control as if I was never there and the original string executed as planned.
The details vary a tiny bit depending on game, but the idea is the same. Ninja stealth attack. The game happily executes all of the original jumps and pointers thinking nothing has happened. In essence, creating new redirect pointers can be easier than successfully updating all the old ones.
The only time I've gotten myself in trouble with the methodology described above is when I needed to use several bytes for the new pointers, and a return offset, and found the game had some strings that were only 1, 2, or 3 characters. Not enough to fit my information in. What I did for those was simply provide them a single byte string index to a special area containing such strings. That's another idea actually. I could have done that for the entire game. One can use string indexes rather than new pointers if the code knew where new text blocks were statically stored.
That's the joy of ROM hacking. There's always more than one way to do things. Creativity is your weapon.