if both ATmega8 and ATmega168 support 20Mhz
They don't - the original Arduino was based on the ATmega8, which has a max frequency of 16MHz. There is lots of timing code built around that frequency, and 16MHz is plenty fast enough for most folks, so it has stayed.
With the "boards" configuration file now available, it would be fairly easy to convert a mega168 board to 20MHz.
Hmm, does the bootloader have to be recompiled for clock changes? It may not be quite as simple as a crystal swap and editing a text file.
-j