This statement is technically incorrect:
"...only the mask is used. The UI renders the mask gray when unselected or blue/chrome when selected..."
You are not supplying any type of mask. Rather, the tab image should simply be a monochrome .png image, aka a only 1 color used.
If you provide a colored image, UIKit will quantize it down to a monochrome image. In the worst case the color image will be ~8000 bytes, which is a waste of ~6k (retina). The file format must be 24-bit .png with transparency for the quantization to work properly. Even though this is a color file format, don't use the color or you're wasting space.
Bottom line is to have the right size, with the best performance and memory usage, use one of these:
48x32 .PNG, 24-bit with transparency (but use only 1 color). Worst case size ~500 bytes.
30x30 .PNG, 24-bit with transparency (but use only 1 color). Worst case size ~350 bytes.
60x60 .PNG, 24-bit with transparency (but use only 1 color). Worst case size ~2000 bytes.