El corazón de un ImageList es un "image sheet". Es una sola imagen que contiene todas las imágenes. Cuando vos agregás una imagen a la "hoja", esta nueva imagen es copiada con el tamaño predefinido y la resolución de color dada al image
sheet.
Ahora, cuando agregas las imágenes al imagelist en tiempo de diseño, deberías establecer la propiedad ColorDepth a Depth24Bit.
Si las imágenes las agregas en runtime, la propiedad debe ser asignada antes de comenzar a agregar las imágenes. El control debe poder crear el image sheet con esa profundidad de color, antes de comenzar a copiar imágenes en él.