This was added in commit 438ee59839ad49bf629452279478462c987b7137, but I couldn't determine if it was intentional.
One reason to accept foo:bar:baz over foo:bar$baz is that $ may be eaten by the shell. Though, I don't think many users pass rpcauth via the shell. Also it should be easy to avoid by passing '-rpcauth=foo:bar$baz' or "-rpcauth=foo:bar\$baz".
Can be tested with the added test.