First: You do not want a MAC collision. I have worked with hardware that sometimes picked a non-unique MAC and your life gets really weird and sucks away a lot of debugging time to find out why impossible things are happening.
Continuing – It made ethernet easy to implement. They could have added some complicated address negotiation protocol and then handled address collisions when partitioned networks healed, but it was "olden times" and something that complicated would not have gained traction.
Fast forward to Wi-Fi. The reason you have Wi-Fi instead of any number of other wireless ideas that died is because it looks like ethernet so people didn't have to think much about it, so you inherit that baggage.
If you really want to change your MAC address then you will want to make sure you aren't going to collide with anyone else. The odds are tiny, but it would be rude to ruin their day. Fortunately, there is a locally administered range of MAC addresses. If your first octet's last digit is 2, 6, a, or e then you are a locally administered unicast address. Assuming your network segment doesn't have an administrator actively handing out local addresses, drop 56 random bits in the remaining octets, cross your fingers, and bring up your network stacks.
I can confirm. Working with a bunch of Chinese hardware with non-unique MAC addresses is painful. It was easier to buy new NICs with real serial numbers than to work out how to fix them.
There are several applications for OSX and various *nix distros that run at boot and randomize MACs. SpoofMac is probably the most well known: https://github.com/feross/SpoofMAC
I'd just like a background service for my Android device that would also randomize my MAC address... (perhaps it's time to investigate android development :P)
Unfortunately (from the apps that I've seen) it looks like only a rooted Android could support it.