- On the router, I forward the port 80 (external) to the port 80 (internal) of (instead of the local IP) the MAC address of the PC.
I know this is not how it works, the question is why it wasn't implemented like this in the first place? And yes, a frame is not a packet anyway. I just mean it for the identification purpose.
What you've described is actually very close to how IP routing works behind the scenes – when NAT or "port forwarding" is not involved, a router forwards packets by changing just their destination MAC and technically doesn't need to know the IP address of the device.
For example, in the routing table (by which I do not mean the "port forwarding" rules) you have a "gateway" or "next hop" field which is traditionally an IP address, but its only purpose is to be resolved to some kind of lower-layer address, so the routing table could perfectly well accept a MAC address directly.
But despite that, routing table entries require an IP address for various reasons. For one, using an IP address is a useful abstraction, thanks to the use of ARP (or NDP) for dynamically resolving the MAC addresses: the actual gateway can change its Ethernet interfaces, but as long as it assumes the same IP address, the same old routing configuration stays valid.
Another reason is that it's simpler to accept just one address type instead of multiple. Even a typical home gateway is not built purely with Ethernet in mind: an ADSL modem already has to deal with two entirely different MAC layers, so its routing table would need to accept two different nexthop address types.
So it's actually simpler to accept IP addresses and rely on the existing mechanisms to translate them – mechanisms such as ARP that need to be present anyway. Also, despite the additional translation, it simplifies things because it means all packets are handled the same way whether they're being delivered to the final host or to another gateway, instead of there being two different cases.
(But some networks actually use IPv6 nexthop addresses for IPv4 network routes. The origin gateway's OS simply uses NDP instead of ARP to resolve the nexthop gateway's MAC address, without any changes to the actual IPv4 packet being forwarded.)
For "port forwarding" a few of the same reasons apply, such as the ability to separate an IP address from the physical host. But the more important reason is because "port forwarding" was a much later addition to IP networking, so it's implemented in such a way that the final host doesn't need to be aware of it happening: unlike with plain routing, a "port-forwarded" packet's actual destination IP address (the one in the IP header) is translated from the router's WAN address to the internal address that you specify.
In other words, the IP address needs to be provided because the entire point of "port forwarding" as opposed to plain routing is to put the target device's IP address in the packet. The result is that the target device thinks it is indeed the destination of the "forwarded" connection and doesn't get confused by receiving a packet with the router's IP (which it would normally discard – or worse, forward back to the router).
There may have been other ways of achieving similar kinds of "sharing" an IP address between multiple devices, but they would have required changes to the devices themselves. For example, if you just directly assigned the same public IP address to all LAN hosts as well as the router – making them accept unmodified packets, with the public IP address – the devices couldn't speak to each other anymore, due to all of them having the same address. (Keep in mind that many IPv4 stacks do not allow multiple IP addresses per interface, so assigning both the public and local addresses would not be an option.) In contrast, the translation that's done
(One alternative method that does work is to assign each device a public IP address, making "port forwarding" rules unnecessary and relying purely on standard routing.)
Another related thought is that ports are not a universal concept, but belong specifically to TCP – which itself relies on IP – so although it would be technically possible to have a rule "if port 80, forward to MAC x:y:z", it logically makes much more sense to have a TCP port associated with a specific IP address (i.e. the immediate next lower layer) than with a hardware address.
Previous answer:
Why the necessity of associating private IP addresses to each one of the addresses connected? Shouldn’t the MAC addresses be enough to forward the information to the correct destination?
Whether it would be "enough" is not the right question. Yes, fundamentally this would be possible, but it's not really desirable – doing so would bring far more new complexity than you're expecting it would remove.
There are already many ways a network could be built on top of Ethernet but without IP (some of which used to be much more popular than IP was), e.g. NetBIOS, DECnet, IPX, VINES, X.25, AppleTalk are just a few protocols that were used on LANs and WANs in the past. Eventually though, practically all such networks either migrated to IP or disappeared. (X.25-based WANs or "Public Data Networks" used to be large, until they were replaced by IP-based networks.)
Although you could still build a LAN without relying on IP, these days any LAN unavoidably needs to communicate with one major IP-based network (the Internet), so if you had a non-IP-based local network that just used MAC addresses, programs would still need to understand Internet IP addresses in addition to local MAC addresses.
It would mean that programs and operating systems would need to deal with two different network types – MAC addresses to reach another host if it's inside the LAN and IP addresses if that host is outside. This is very similar to a current problem of using a private IP address for hosts locally and a public address when going through "port forwarding", but strictly worse.
(To be fair, it would be a little bit like the current coexistence of IPv4 and IPv6 on modern networks, with programs needing to support both – but IPv6 has a practical need to exist and its existence aims towards unifying networks, while the hypothetical MAC-address-only network would only separate them more without any practical advantage.)
Even though hosts inside the same network could use just their MAC addresses to communicate, as soon as an internal host needs to send some packets to the Internet you'd still need an extra header that could hold at least the destination IP address, and the router would need to translate between the two packet types – regular IP on one side, the hypothetical "non-IP, but please deliver to an IP address" LAN protocol on the other. That's doable, but far more complex than just using the same kind of IP on both sides.
One important point is that "private" IP addreses are a much, much later addition to IP networks – the current translation between private and public IP addresses is not a natural part of how IP works, but was largely brought by the "Common home router" years later. Before then, hosts in a LAN (if the LAN used IP) used to just have public IP addresses like anywhere else on the Internet – servers in datacenters still do – and there was no "port forwarding" needed, as you could reach any host by its own address.
Overall this would be somewhat contrary to the existence of IP in the first place – the entire goal of a network-layer protocol is to unify different kinds of networks. Currently, IP in your home LAN works exactly the same way as IP at your office or university or various public networks or the rest of the Internet.
(In a similar way, IP over Ethernet works like IP over cable works like IP over ADSL works like IP over 3G/4G, even though each of those network types has a completely different MAC-layer sometimes without even the concept of a "MAC address".)
In fact, the goal of the "upcoming" IPv6 is the complete opposite of what you're thinking about – in particular the ability to assign public addresses to every device leads to unifying the networks further by removing the "private addresses start here" NAT boundary that IPv4 LANs currently have to deal with.
(Similarly, there are continuous efforts to extend IP usage to networks that didn't use it yet, such as Thread in IoT.)
Side note regarding comments about MAC addresses not being routable: There already are various ways to build routed networks that only use MAC addresses; they're just not used on typical IP-based LANs because IP-layer routing is sufficient.
For example, HWMP and B.A.T.M.A.N are standard for Wi-Fi mesh networks, while SPB and TRILL in enterprise networks apply the same IS-IS routing protocol to L2 addresses as is widely used for IP routing.
(The IPX and XNS networks protocols also directly used Ethernet MAC addresses for identifying hosts, but achieved routing by having an additional "network address" prefixed to the MAC-based host address, avoiding the need to route each MAC individually. If you squint, IPv6 kind of worked the same way at first.)