I am using Fritzboxes since ages and can’t say that I share your experience.
Back in the days, I had a 3 node master-only swarm cluster and I used maclan without having those implications. The cluster nodes used static ip’s outside the dhcp range, the macvlan range was outside the dhcp range. The containers appeared like every other host on in the FB’s network overview. I must have had a 7590 then as well, as I bought it right away when in entered the market, which more or less matches the time when swarm mode was introduced in Docker 17.03.
Though, what realy caused problems on the FB was keepalived and it’s failover-up behavior!
I manually added an ip (probably somewhere in the portforwarding rule creation dialog, with a mac address!) and manualy assigned it the hostname “swarm” and used it as failover ip on my nodes “swarm1”, “swarm2”, “swarm3”. This worked more or less reliable, except that sometime the ip’s of the node names flapped from the node ip to the failover ip on whichever node that was the current keepalived master.
I can check what happens if I run macvlan with my 6591 the next days. I just have to find an ip-range within my subnet that suits for a proper test.
On a 2nd though, maybe I haven’t had the issue because I assigned static ips uing the ipv4_address setting (only works for plain docker-compose deployments). I did setup macvlan for swarm as well, but didn’t like the idea that a swarm service do not allow to set the ipv4_address setting.
Note: I stopped using macvlan after my experiments, as my use cases do work like a charm without. Instead I use pihole to manage domains that resolve to my nodes and use a containerized reverse proxy that forwards traffic of a domain to a specific containerized service.