$ is a two stroke character on German keyboards, # is one stroke. But other than that, German keyboards are anything but programmer friendly - [],{}, ~, and \ are all on an AltGr combination. Whatwheretheythinking.
True, on 65xx # would be an immediate value. But on Z80 luckily we don't have that "problem"

The people who's code I studied in order to learn asm mostly use # for hex, so naturally it became a habit for me, too.