The reason we're stuck with either 8-bit or 16-bit numbers is that computers typically use either 1 byte or 2 byte registers to store numbers. 1 byte=8 bits, so 2 bytes=16 bits.
And, of course, those registers are independent of the actual programming language, since the higher-level programming language instructions are compiled into a set of machine instructions, which are based on the registers (and a few other things, but that's a different topic entirely).
As for why 1 byte = 8 bits, that's a matter for history buffs (hey, I'm only 31 years old, how should I remember the glory days of computing

).