I think that Brainfuck and many other esoteric languages almost never win code-golf, because they take many characters to express things. So, overall, Brainfuck programs are longer in bytes, because they use only eight different characters. I think that it isn't fair to give each character one byte in a language which uses just over 3 per cent of the ASCII charset.
I'm suggesting this simple amendment to the scoring rules of code-golf which will give some esoteric languages more of a chance.
If you have a character set of only 16 characters, each character is 4 bits. Hence, you can store 2 characters in one byte.
So, in languages which have 16 or fewer useful characters (e.g. Brainfuck, any others?), every character should count as 0.5 bytes (unless the program contains ASCII characters which are not in our set of 16, in which case normal scoring applies).
Similarly, for languages such as Whitespace, which uses 3 different characters (correct me if I'm wrong), you could count every char as 0.25 bytes, unless the program contains other chars.
I'm a bit reluctant about giving HQ9+ the 0.25 byte privilege, but ultimately there's no reason why not - we all know it's a joke, it won't somehow become more clever if we allow it to be scored like this, and if we didn't let HQ9+ have 0.25 bytes per char it would be a confusing exception to the rules.
TL;DR (too long, didn't read)
I think that in languages that use 16 or fewer different characters, and ignore all others (e.g. Brainfuck), every character should count as half a byte for code-golf. This will give more of a fair chance (?) to many esoteric languages, and allow them to compete with more respectable things.