From the Wikipedia article:
Modes 0 to 6 could display colours from a logical palette of sixteen: the eight basic colours at the vertices of the RGB colour cube and eight flashing colours made by alternating the basic colour with its inverse.
"the vertices of the RGB colour cube" is a fancy way of saying:
- Red - on or off (1 bit)
- Green - on or off (1 bit)
- Blue - on or off (1 bit)
Which gives you 8 colors:
- Black (all off)
- Red (red on)
- Green (green on)
- Blue (blue one)
- Yellow (red and green on)
- Magenta (red and blue on)
- Cyan (green and blue on)
- White (red, green and blue on)
These colors were quite common in many computers of the time, and live on in HTML. Note also that Cyan/Magenta/Yellow is very common in color printers (inkjet and laser).
Since 4 bits is more logical in a binary computer than 3 bits, a lot of systems used 4 bits for color in some fashion. The BBC Micro used it for flashing, which is great for getting attention. Other systems used it in other ways. The IBM PC CGA adapter used the 4th bit as intensity, with one exception - instead of "dark yellow", the CGA monitor had some special circuitry to make a more useful brown color.
There are two basic ways to get more colors - more bits or a lookup table. In fact, the BBC Micro graphics and text modes actually used 1 or 2 or 3 bits - not even the full 4 bits of possible "colors", using a lookup table of some sort to match to 2 or 4 or 8 of the available colors. More bits = more RAM, which cost directly in hardware and also limited the amount of memory available for everything else, so this was a common situation in 8-bit and even 16-bit (e.g., IBM PC with CGA) computers.
A more extensive lookup table - e.g., still just 3 bits per pixel but from an 8 bit or possibly larger selection of colors - was certainly possible, and some machines did that, such as the Atari 400/800. But 8 or 16 colors, with only some colors available depending on the mode, was extremely common - IBM PC CGA, Apple ][, Commodore 64, VIC 20, etc.
Sticking to 1 bit for each part of the video signal - Red, Green, Blue - keeps the circuitry extremely simple. Flashing by inverting the signal is also pretty simple, as is the IBM PC CGA (and others) intensity level. Anything beyond that gets relatively complex by the standards of the time.