For the last-unit case, the conditional update does the actual protecting: UPDATE ... SET qty = qty - 1 WHERE sku = ? AND qty >= 1, then check affected rows. Two servers can race all day and only one gets a row back.
The lock earns its keep one step earlier, so you don't charge the card and only then find out the stock is gone.