Когда вы связываете функцию, вы запрашиваете новую функцию, которая игнорирует свой псевдо-аргумент и вызывает исходную функцию с фиксированным значением для этого.
Привязка этой функции в другой раз имеет точно такое же поведение. Если bind каким-то образом вставит в него новое this, то это будет особый случай для уже связанных функций.
Другими словами, связывание работает точно так же и с «нормальными» функциями, как и с функциями, возвращаемыми связыванием, и в отсутствие переопределяющих факторов целесообразно поддерживать семантическую сложность функции на низком уровне - проще помните, что связывание делает с функцией, если она обрабатывает все функции ввода одинаково, в отличие от специальной обработки некоторых функций ввода.
Я думаю, что ваша путаница заключается в том, что вы рассматриваете bind как изменение существующей функции, и поэтому, если вы измените ее снова, вы ожидаете, что исходная функция будет изменена снова. Однако bind ничего не меняет, он создает новую функцию с определенным поведением. Новая функция сама по себе является функцией, а не магически исправленной версией исходной функции.
Таким образом, нет никакой загадки относительно того, почему он был стандартизирован или изобретен таким, каким он был: bind возвращает функцию, которая предоставляет новое this и добавляет аргументы, и работает одинаково для всех функций. Простейшая возможная семантика.
Только так можно безопасно использовать - если связывание будет иметь значение для уже связанных функций и «нормальных», нужно будет проверить их перед привязкой. Хорошим примером будет jQuery.each, который передает новый this. Если бы связывание было связано со специальными прописными функциями, не было бы безопасного способа передать связанную функцию в jQuery.each, так как это будет перезаписываться при каждом вызове. Чтобы это исправить, jQuery.each должен каким-то образом специализировать связанные функции.