Не стоит гадать и отгадывать.
JavaScript это формализованный язык программирования что означает что у него есть четкие правила (грамматики) с помощью которых выполняется синтаксический разбор. Все эти правила описаны в спецификации языка.
В первом случае «(_ = A.f) (30);» в части выражения «(_ = A.f)» есть оператор "=" который и превращает эту часть выражения в так называемый
AssignmentExpression.
AssignmentExpression не может быть частью другого выражения.
Для выражения которое является частью другого выражения используют понятие
MemberExpression (т.е. такое к которому можно добавить параметры и попробовать вызвать как функцию).
Кстати запятая в выражении то же делает выражение как AssignmentExpression
https://262.ecma-international.org/8.0/#prod-Expression.