In purely technogical terms, of course you could have designed something which doesn't have two layers of addressing.
Consider two questions: 1) how should we send IP packets when it's not ethernet underneath? 2) how should we send packets which aren't IP?
You have to remember that when the internet was being designed, ethernet was not ubiquitous; when ethernet was designed, many other upper layer protocols were current.
So I'd say the real question is: what are the advantages of layering the protocols? Fundamentally this comes down to cost. Ethernet, in particular, was designed to be as widely deployable as possible, with the explicit goal of minimising the unit cost. It comes with an addressing scheme which is convenient for LANs and unrelated to any upper addressing, and which allows for the ethernet hardware to recognise incoming frames without interrupting the CPU. This addressing is extremely low maintenance. The internet protocols, correspondingly, were designed to work on top of whatever links you might have, and have addresses which make sense in terms of organisations, and are convenient for routing. But they're reasonably high maintenance in comparison.
So we have two layers of addressing to cover the requirements of the two layers.
[EDIT] Some afterthoughts:
The proof you could do it with a single kind of addressing is that you could reprogram all your ethernet cards to 02:00:a:b:c:d where the IP address is a.b.c.d. The situation where there are multiple IP addresses for a single ethernet would pretty much force the same kinds of mechanisms as we have now, ie something like ARP.
A benefit of ethernet addresses being supplied as part of the hardware is that BOOTP (and hence DHCP) is easy. Without hardware MAC addresses you'd need something like a serial number locked to the hardware, OS installation (like an SSH host key), or manually configured (like a hostname). If you've got a serial number locked to the hardware, you could use it as a MAC address!