You don't jump through different hoops in most languages [1].
In Oberons you jump through the hoops because only `loop` is allowed to have `exit`, for example. Which is a constraint for the sake of constraints. Repeat is a do/while, but it doesn't have while's elseif statement. Again, because reasons. And so on.
Oberon is nothing but hoops instead of loops.
[1] Go's decision to not include do/while is on par with Oberon's decisions for loops: stupid and unreasaonable.
I think that having four different loops is better than jumping through four different hoops for different loop styles.