The MOS VIC in the VIC-20 and the MOS VIC-II in the C64 were capable of outputting 16 colours drawn from a hard-coded palette.
It's clear that the palette size was fixed at 16 colours as a memory-saving measure. It's also clear that it is immensely helpful for there to be some default assignment of colours to this palette. But why was no provision made for changing this default assignment?
As I understand it, the VIC-II directly generates its video signal in terms of YIQ or YUV, with one luminance and two chrominance signals. Rather than hard-coding the three YIQ/YUV values for each of the 16 colours in the palette, would it not have been possible to allow the user to specify them via memory-mapped registers? I understand that YIQ/YUV values are real-valued, but surely these could be quantized into 256 values to fit into a byte, or into 16 values to fit into a nybble? In fact, it seems that this sort of quantization is exactly what MOS did for the Plus/4's TED, where the [0,1] luminance space is mapped to eight discrete values.
Would allowing a custom palette have been considered too expensive or complex to do back in 1981 when the VIC-II was designed? Or did the designers simply not anticipate that there would be any need for user-definable colours?