It's pretty much all based on accepting and storing as the ether_addr struct, and using the central ETHER_ADDR_LEN. If we only accepted a uint8_t array as you suggested, and store as that, we'd probably be fine removing them, but at the expense of more work inside anything creating MACAddress.h, having to convert ether_addr to the array.