I believe there is a small difference between spawn() and coroutines. I think I have read that coroutines start immediately, while a spawn() will not. But we’re talking about a difference of a fraction of a second, so that would only matter in very specific use cases. I use spawn() and have never had an issue with it.
Edit: I wrote this before I saw the above post, but that is a good answer that basically says the same thing.
This isn’t asking for support with a script he’s already written, it’s a discussion about optimization depending on the method one uses to write it. Definitely not off topic.