If you create a 16-bit texture using:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_texWidth, m_texHeight,
0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, outPixel16);
Is the GPU really using 2 bytes per pixel, or does it just convert everything to 32bit internally?
POWERVR GPUs natively support RGBA4444, so yes, it should be 2 bytes per pixel.