orientação a objetos – É possível utilizar Object.assign para atribuir propriedades ao this no JavaScript?

Sim. Conforme expliquei nesta resposta, o Object.assign utiliza a operação interna ((Set)) para definir as propriedades dos objetos passados do segundo argumento em diante no objeto passado como primeiro argumento. Desse modo, é a mesma coisa de atribuir as propriedades explicitamente utilizando o operador de atribuição (=), que também utiliza a operação ((Set)).

No entanto, note que você não está passando objetos do segundo argumento em diante, mas sim valores primitivos (provavelmente strings):

Object.assign(this, name, email, phone);
//                  ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//                  Devem ser objetos.

Observe que name, email e phone são (provavelmente) strings, e não objetos. Portanto, você deve utilizar assim:

//                  ↓                    ↓
Object.assign(this, { name, email, phone });

Note que acima foi utilizada a notação abreviada de nomes de propriedades para se criar o objeto literal. Ela foi introduzida no ECMAScript 2015 (ES6).

Exemplo:

class Foo {
  constructor(name, email, phone) {
    Object.assign(this, { name, email, phone });
  }

  method() {
    console.log(this.name, this.email, this.phone);
  }
}

const inst = new Foo('a', 'b', 'c');
inst.method(); // a b c

Note que eu adicionei ponto e vírgula no código. Pode parecer “frescura” e sei que o JavaScript “aceita” o código sem ponto e vírgula e “funciona”, mas isso evita algumas situações bizarras que podem ocorrer se você não os usar, como esta e esta (veja mais sobre isso aqui).

Também removi os inicializadores de propriedade no começo da classe já que eles não estavam fazendo nada ali, uma vez que as propriedades já serão inicializadas no construtor.