Well, you can certainly justify using them. Suppose a routine has a specific function used all over the script, but is mainly used in a specific subroutine. Why not?
I guess I know from experience writing ScriptUO that when you hit a SUB tag, it does NOTHING. It's just a tag marking a location for the GOSUBS to go. So there's no overhead from a SUB; the overhead comes from the GOSUB since you have to setup the %0, %1, %2, %etc variables and perform the stack interaction and execution pointer jump.
However for me, I just would never do that. I like code to have a specific flow to it. Sub'n'subing just makes me think back to the good'ol days of coding BASIC using line numbers (MSBASIC, BASICA, ApplesoftBASIC, etc) I'm not a fan of spaghetti coding, and this really smells like fresh pasta. lol. Thankfully, I'm allergic to pasta now.