In WSS v2, the number of columns on a list is directly proportional to
the number of columns for a given datatype in the UserData table in the
database. From memory, 64 nvarchar, 32 int, 16 bit, 16 text (this is
like memo), etc. In WSS v3, due to Content Type demands, Microsoft had
to allow ListItems to take up to four rows rather than just one. This
would increase the number of columns by four-fold. So, 256 nvarchar, 128
int, 64 bit, 64 text, etc. However, I remember trying to test this and
came to the conclusion that there is no longer a limit. I don't know
which is correct now but I'm certain that WSS v3 increases this number
substantially, perhaps even infinitely (within reason).