Hi Simon,
This is how we are using it in ArduPilot:
I didn't add a remove function on the general principle of not adding code that doesn't have a use case yet. You could just clear the NETIF_FLAG_PROXYARP flag in the netif, but I can certainly add the remove function if you would like it.
There certainly are use cases for more than one proxy arp entry. Many years ago I did a patch set for the linux kernel that added proxyarp subnets, so you could add a whole subnet that gets proxy arped. It looks like that functionality is still around judging by the kernel docs, though the actual code has likely changed a lot. There are many games you can play like this with proxy arp, but I thought just doing the simplest case is enough for almost everyone using lwip.
Cheers, Tridge