Presently the commands Goto and GoSub prohibit jumping in and out of functions to labels that exist inside a different "block" enclosure.

The restrictions are on the Goto and GoSub commands themselves, and not inherent or problematic in the scripting engine, making the restrictions arbitrary.
Presently, any callbacks and hooks that utilize labels CAN jump into functions without restriction, and it's sometimes useful.
Given that labels are Global in scope, there's no risk of confusion which label is intended.
Jumping into a function can allow you to alter the value of Static variables within that function, so you can avoid using global variables... and other goofy things.
#include libraries that require labels should be encapsulated in a dummy function to prevent early execution and termination of the auto-execute portion of the script.
Decorum: Arguments of "You should never use Goto or GoSub" are automatically invalid and off-topic by the very existence of their syntax. I'm not bound to such rules.