I think the bash manual page lacks some important detail of parameter substitution, namely: "Bash tests for a parameter that is unset or null. Omitting the colon results in a test only for a parameter that is unset."
(found in https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html)