Besides looping, foreach allows assigning the topic to a variable (foreach my $foo (...)), C-style loops (foreach (my $i = 0; $i < ...; $i++)) and its use a statement modifier. Furthermore, you cannot use a continue block, next, last or redo with given.
At the moment, I can't think of anything given gives you that for/foreach doesn't.