Jumps inside a sub is not a "bad" programming method.
The main reason for what B4X has no jump (goto) statement is that it is near a translator to Java, and Java don't offer jumps.
No experimented programmers (and mainly low level programmer) can say that jump are sign of a bad programming. Otherwise all the processor manufacturers ar bad conceptors, and all the O.S. makers are also bad programmers. The just answer is not too of each method (loop or jump), and each method applied to its appropriated case.
Emphasis in my post, on the word "encourages". NOT enforces! the words I used were very different there. So before you argue against me about bad programming, or bad programmers, please understand my context and wording first.
Besides, again, you speak of low-level programming which jumps and gotos make sense, not to mention branch to subroutine, branch if not 0, decrements branch if 0, compare, branch if equal, etc. etc. etc...
but ive seen mid-level languages with GoTo statements that bounce around between subroutines and make spagetti code. Hence, Encourages bad programming. However, you can perform proper programming with those statements.
I guess technically using anything incorrectly encourages bad programming, but I hope you get my point. Being, I just do not see that stuff used in high level languages.
Why VB6 used it? No idea, even though it is a run-time based language.