The syntax for snippet placeholders is identical to some shell parameter expansions of the positional arguments in a script. If you want to put such shell expansions in a snippet, the snippet is mangled when it's inserted.
Fixed in PR #23, which allows shell snippets to have an escape syntax like ${\1:?message} to produce ${1:?message} when the snippet is inserted. Other common shell expansions work too, like ${\1:-default} and ${\1:+alt-txt}.