Since we are specifying $S > S_f(t)$ you are correct, and equality holds. The author was probably trying to generalize to an equation where no restriction on being above the exercise boundary holds.
Mathematically, this is clumsy and useless but it often motivates the early exercise updates when we are using finite difference schemes (like trees or grids) to price the option.
Recall that in these schemes we discretize underling prices to a grid $S_n$ and backwardate from time $t^{m}$ to $t^{m+1}$ by applying a matrix operator to grid prices $P^m$.
If we use an explicit scheme like a tree this consists of computing
$$
\tilde{P}^{m+1} = C \cdot P^m
$$
for some matrix $C$ and then handling early exercise by setting
$$
{P}^{m+1} = \max\left(\tilde{P}^{m+1} , X\right)
$$
where $X$ are exercise values.
For nodes on the grid with no neighbors above exercise value, equality holds exactly. But right near exercise value the finite difference formula for $\frac{\partial^2 P}{\partial S^2}$ term gets an updated term inside, destroying the equality.
$$
\frac{\partial^2 P_n}{\partial S^2} \approx \frac{P_{n+1} - 2P_n + {\color{red} {{X}_{n-1}}}}{\Delta S^2}
$$