Eso se debe a que hay 3 fuerzas actuando sobre cada una de las partículas: cohesión, separación y alineación. Y como cada partícula en cada ejecución inicia en una posición aleatoria de la pantalla, se producen esos resultados en donde su comportamiento depende de qué tan cerca están de los bordes o de las demás partículas y así.
Ah sí, he usado boids bastantes veces, pero creo que nunca hice que pudieran detenerse. Si no recuerdo mal la velocidad era constante. Me gusta más tu versión