It is highly doubtful that mIRC uses a single byte to process color codes. The information is presented as two integer values as part of a string. It would be more complicated to transform the codes into a bitwise value (string -> int -> byte-order -> byte) than to just parse them as integers (string -> int).

The most obvious reason as to why only 16 colors are allowed is the fact that no other clients (that I know of) support more than 16 colors. Extending the palette would create problems for other IRC applications, and I'm sure Khaled is aware of this.