There is a difference between the offline password guessing attack and the online password guessing attack. In an offline password guessing attack, the attacker can enumerate passwords and verify his guesses without the server knowing that. Thus it is devastating because passwords are often of low entropy, and the attacker can find those weak passwords with a reasonable low cost (despite key stretching is used).
The reason why the post in your question suggests not to make salts public is that if the attacker does not know the salt, he will be forced to perform an online password guessing attack, in which he has to interact with the server for each password he enumerates (to verify the correctness of his guess). At this point, the server can implement certain mechanisms, e.g. locking out the account after a certain number of logging failures or add delays to make guessing more time-consuming. This would counter the password guessing attack effectively and protect low-entropy passwords.
However, keeping the salts secret is not easy because they are stored in plaintext and meant to be non-secret (in fact if all passwords are of high entropy, the salts can be made public without any problem).
Because keeping salts secret is problematic, a more proper mechanism (in my opinion) if password security is a concern is to use a password-authenticated key exchange protocol that is secure against off-line password guessing attack (and this is achievable without requiring the salt to be secret).