Hi,
you are talking about the ARP cache. Every router (and every IP talking device) has one, and it is indeed done for performance reasons (asking for an ARP resolution prior to every packet is pointless).
The problem is that some vendors have silly defaults for the ARP cache timeout. Notabliy Cisco has a default of 4 *hours* which gives all sorts of grief like you describe.
Good platforms allow to reduce the ARP cache timeout to something reasonable, like IMO 5 minutes (300s). On a Cisco, you would do
int e0
arp timeout 300
On a HP ProCurve, the current default timeout seems to be 20 minutes. That's still a bit large but good to prevent high broadcast rates in overwhelmingly large broadcast domains, I usually reduce it to 300s as well, you can do this either in the menu or in the CLI using
ip arp-age 5
BTW, one reason for setting the ARP cache timeout to not larger a value than the MAC table timeout (which in any sane bridge is 300s) is that it will prevent unidirectional unicast flows from becoming a flood to unknown destination MACs. Before it would come to that, the destination must be ARPed for, forcing it to give an ARP reply, and that one can prime the MAC tables again.
HTH,
Andre.