Внутри функции может потеряться контекст в зависимости от того, как она вызвана.
// вызов
obj.foo();
// и вызов
const bar = obj.foo;
bar();
// оба вызывают foo, но во втором случае this внутри foo будет привязан не к obj,
// а к глобальному объекту
Таким образом, если мы хотим передать функцию куда-то с определенным контекстом, нам ее надо привязывать. Второй момент, что класс это просто синтаксический сахар, а на самом деле это просто функция, к которой this не привязывается. Таким образом, внутри класса, метод не будет понимать куда вы обращаетесь без привязки.