You could ask the same thing about your appendix. Old habits die hard.
Programming theory identifies 4 basic elements of structured languages:
Sequence (executing instructions in order)
Selection (making a decision, and executing one or another pieces of code - if/then type)
Iteration (looping)
Recursion (routines calling themselves)
GOTO’s are in the “Selection” category, and people generally consider code written using them extensively as hard to follow / spaghetti code. You can certainly write spaghetti code without GOTO’s, but in practice, in code many people have “inherited” (legacy code), overuse of GOTO has really messed things up.
In practice, my understanding that GOTO is seen as typically OK in one circumstance: Critical Error Handling. In the case where a catastrophic error has occurred (disk read failure, etc), use of GOTO is ok to jump out of the code to an error handler. Other than that, I haven’t heard of instances these days where average programmers approve of it’s use.
Perhaps it has been retained in the languages for either one of two things:
To robustly support the “Selection” of code.
To ease implementation of Critical Error Handlers.