La interpretación purista es que el flujo de un programa debería ser fácil de seguir sin saltos bruscos y sin "romper" el flujo de las estructuras de control.
Break, excepto en un switch, y continue son "atajos" para romper el flujo de control y hacerle saltar a otro lado, y por eso se consideran malas prácticas. Y de hecho... en la mayoría de casos, lo son

. Por ejemplo, un for con un break normalmente es que tiene mal la condición de salida del for, o debería ser un while. Un continue normalmente es una forma de ahorrarse un else... etc.
S!