There's no doubt the vast majority of Ethernet frames are transporting IP packets. I know there are various other protocols that can be transported over Ethernet as well, but those can be transported over IP as well.
With modern Ethernet networks being full-duplex, Ethernet has effectively turned into a point-to-point interconnect between an endpoint and a switch, which switches the packet based on the MAC destination. L3 switches do the same thing but also perform some IP routing.
Since we use Ethernet mostly only as a means to transport IP, is there any reason to have that extra layer of L2 overhead? Why not just route packets based on the destination IP? I suppose that would be breaking the OSI model, to some extent, in that L2 would cease to exist.
Imagine a link layer technology that was designed only to transport IP, and didn't have any specific L2 functionality or header of its own. Switches and routers would continue to exist like today: switches would be "basic routers" (just like L3 switches are) and mostly only take fixed routes and a default route. Switching flow: is there a route in place for this destination? Stick it in that interface's queue. If not, stick it in the default route's interface's queue.
Is there any compelling argument for keeping things the way they are?