This is indeed a very logical behaviour and the correct one. Same behaviour will be seen in Windows Forms.
To understand why, then by setting e.Cancel = True inside the TextBox1.Validating event handler you are stating that Focus should not leave that control, so the control is entered again and those events fire as a result of that. You can argue that Enter and GotFocus should not fire on any control in this context, but this is the Windows Forms behaviour and it's replicated correctly in Visual WebGui.
I did however find a small problem there, as in this test, GotFocus did also fire on TextBox2. It should not do that as focus is to stay within TextBox1 because of e.Cancel = True setting. I opened a new tracker entry on that subject. Please view it here and follow up on our progress.