¿Por qué definir propiedades en el prototipo es considerado un antipatrón?

A menudo veo este patrón para definir objetos javascript

function Person(name) {
    this.name = name;
}
Person.prototype.describe = function () {
    return "Person called "+this.name;
};

Y enEste artículo dice que agregar propiedades directamente al objeto prototipo se considera un anti-patrón.

Al provenir de lenguajes "basados ​​en clases clásicas", tener que definir las propiedades aparte de los métodos no suena del todo bien, más aún en javascript, donde un método debería ser solo una propiedad con un valor de función (¿Estoy aquí?)

Quería saber si alguien puede explicar esto, o incluso sugerir una mejor manera de manejar estas situaciones.