Потому что код делает разные вещи.
В первом случае поздравления получат первые 3 человека, а потом break выбросит нас из цикла
Во второму случае инкрементируя counter мы проскакиваем "David" и поздравляем последних 3 человек, упав при этом в ArrayIndexOutOfBound из за того что сначала инкрементировали counter, а потом попытались взять элемент массива с индексом 4.