Probably - but I think the benefits are likely pretty minimal for something small like this. The insertBefore method is pretty standard for tag managers (e.g., GTM, Launch) so I’d stick with it for the moment unless there’s going to be a sizeable difference otherwise.
I think you could create two 's rather than using insertBefore, I think you’ll just need to make sure they run in the correct order (so not async) so that the SnowplowGlobalNamespace is initialised on the window before the sp.js script loads.