Why are ethernet- / mac-addresses in hex (and have 48 bits) and ip numbers in decimals (and have 32 bits)? Does that have historical or practical reasons?
Different people design different protocols. Ethernet can transport more than IP (IPX was quite common 15-20 years ago and also used hex in it's addresses. To be more precise: The local part of an IPX address was the MAC address). IP on the other hand can run without using Ethernet as Layer-2 protocol.
Somehow Ethernet (and MAC addressing) became the dominant layer-2 protocol and IPv4 the dominant layer-3 Protocol. With IPv6 we have HEX back in our IP(v6) addresses .
Jens has a great technical answer (and got an upvote from me) but the other aspect is human readability, because as humans we were always intended to be the "things" that would need to understand these addresses at a higher layer of consciousness that machines do not possess. Conveying a 48-bit address in decimal would be less efficient than conveying a 32-bit address in decimal (in the context of human readability; everything is binary to a router/switch/whatever).
For example, the number space that's able to be expressed by 32 bits lends itself nicely to carving that space up into evenly-sized chunks (the chunks here are bytes, or octets) of 8 bits each, and you have a maximum decimal "capacity" of 255 for each one of those chunks. This would naturally lead to representing those addresses in the dotted decimal format, because you won't ever have an octet that's longer than 3 decimal digits.
A MAC address is different. Hexadecimal is more efficient here because you can express more with less, and you are again limiting the scope of the length of digits to compensate for the larger address space. There are 6 octets in a 48-bit address, and each hexadecimal digit is 4 bits; you won't have any octet in a 48-bit address be longer than two hexadecimal digits.
is easier (more efficient) to read, write and interpret than