Well, the costly part is the rendering, which happens from a delayed GTK idle callback inside scintilla. As Matthew said when the text is inserted into the buffer the cursor is at the end, getting it back to the start before the rendering is important, the less of the text Scintilla renders the better, and if the position is set at zero it *should* only render the start of the text, not the whole file, which would happen if the position was still at the end.
I didn't noticed that somewhere cursor placed at end of file. Geany calls set_cursor_position several times. But actually goto isn't bottleneck, only SCI_ENSUREVISIBLE slows things down.
P.S. I hope now all messages are correct? I had a troubles with my mail filters.
-- Best regards, Pavel Roschin aka RPG