Keywords such as continue and break do indeed behave like goto; but unlike goto, when I see them, I know exactly where it will jump, because the rules for break and continue are very strict, unlike goto.
Furthermore, if you would use goto, you need to put a label everywhere. And labels do no follow scope rules, so each label would be unique for every loop in a function. So if I said goto StartOfLoop50, I would first need to know which is the loop 50.
And then we have to type out more stuff and clutter the code even more, making continue and break easier to read, decipher and type, hence making goto a worse solution. It might just work, I'm not saying it wouldn't, but in these cases, all I say is that it's unnecessary. There are better alternatives.
In essence I would say: all the legitimate uses of goto has been replaced by other approaches in the language, making goto unnecessary. Where you would use goto to jump around in the code, like the abovementioned example, it's really evil because it hurts readability and maintainability.
I don't fancy reading through that document. It looks so boring. All I want is some examples (in C++!) where goto really improves some part of the code. I would gladly change my notion of goto. Failing that, I will stick to the tried-and-true notion of that goto is evil.