Por que definir propriedades no protótipo é considerado um antipadrão

Muitas vezes vejo esse padrão para definir objetos javascript

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

E emEste artigo ele diz que adicionar propriedades diretamente ao protótipo objct é considerado um antipadrão.

Vindo de linguagens baseadas em "classes clássicas", ter que definir as propriedades separadamente dos métodos não soa bem, mais do que em javascript, onde um método deve ser apenas uma propriedade com um valor de função (estou bem aqui?)

Eu queria saber se alguém pode explicar isso, ou até mesmo sugerir uma maneira melhor de lidar com essas situações