why not just ... a MAC address?
A router might not use a MAC address on an interface - not all L2 protocols use MACs even though many do (mainly the IEEE ones like Ethernet or 802.11). Also, routers are used in network layer protocols which only have a very rough concept of data link layer topologies (if at all).
Also [MAC address] should eliminate the need in changing IP addresses in settings when gateway IP is changed.
When the gateway's MAC address changed (load balancing, redundant failover), all your routes would break. As it really is, a simple gARP updates all ARP caches around the network without any need to touch routing tables.
why not just ... an interface?
Interfaces can be point-to-point (like a simple serial interface) or point-to-multipoint (like with Ethernet or Wi-Fi). On a point-to-multipoint interface you can't simply send a packet, but you need to specify the recipient in the local network. That's where the gateway address is required.
Of course [interface as gateway] cannot be used with dumb hubs (and can be used with switches/routers/etc)
Switches do require a destination MAC address for forwarding, they cannot forward by IP address. Still, the local sender needs to be able to determine that MAC.
Generally, you can't/shouldn't attempt to mix addressing schemes between layers. It wouldn't work in your favor. The whole point of layering is to make each layer independent from the others so you're getting a modular system that has an extreme range of adaptability.