Since we don't run on PDP-8s ;-) there's a very good chance the 3 shift + 2 OR version will lose to the multiply+divide. But since it's in PALETTE_INIT() it only runs once on driver startup and doesn't matter anyway.
I'm never going to live this down, am I? I bet I'll be the PDP-8 "expert" when people start playing with the MESS driver, too. That will be a fun machine to do artwork for - lots of blinkenlights and switches.
If you want to do it with multiply and you have space for a 9-bit intermediate (as we do because we use int), you can save doing a real divide and let it degenerate to a shift like this (compiler automatically turns divide by power of two into a right-shift these days, and a single shift is definitely faster than a divide). This produces the same effect as the three shift + 2 OR version.
int eightbit = (threebit * 0x49) / 2;
I'd agree with JD that the hardware more likely behaves this way than by effectively doing x * 255 / 7. It's a lot simpler to do in silicon as it only needs selection logic. It does produces different results for some values - e.g. 6 becomes 218 if you multiply by 255 and divide by 7, but it becomes 219 if you use bit repetition.