Most people controlling both ends would use a VPN, which pushes the problem of the unstable network topology onto the VPN.
Incidentally, unless you never make any calls out through the problem trunk, the end with the broken address has to act like a server as well as like a client. If it were just acting as a client, you could allow promiscuous addresses and authenticate by TLS or by SIP authentication, even without using registration. For PJSIP, I think you can also do this for the whole ISPs address range, not completely promiscuously. Things will still break, as one cannot, sensibly, do a DNS query before every single RTP packet.
SIP was designed to work in a first class internet environment where all relevant addresses are part of the internet. It’s like SMTP email, which was designed for point to point operation, and, at least in the UK was even used that way , in the early days, even by hobbyists, although it is now restricted to medium to large business users. Nowadays consumers and small businesses only use SMTP outbound and suck incoming mail from a central mailbox using IMAP. Telephone calls have to be immediate, so polling for them like with IMAP doesn’t work (I know some mail clients now have a connection open waiting for new mail to arrive, so they can pull in near real time).
I lot of work has gone into making consumer grade internet connections do things best done with first class connections, but they all introduce fragility.
One of the reasons, originally, was a shortage of IPv4 addresses, but there really should be enough IPv6 infrastructure to avoid that problem now. Another shortage issues was that people were dialling up so addresses can shared across multiple customers, but that doesn’t work now, because everyone is up all the time now. (Someone on either this or the Asterisk forum does seem be having problems with a mobile network that multiplexes and NATs several customers over the same public address, and I guess people using anonymisation services also have that problem.)
Many years ago, when I first became aware of the unstable address problem, one of the theories as that it was done to discourage servers, so ISPs could charge more for server capable accounts. I suspect there is also an element of that. Thee may also be an element of laziness in the way that DSL routers are operated.
I presume that this ISP doesn’t give advance warning of an address change, so that DNS time to live times can be run down. I don’t know what dynamic DNS services use as a time to live, but I can imagine that a lot of people ignore very low values, to avoid large amounts of DNS traffic. Dynamic DNS is a hack to get round the use of an unsuitable product. DNS was never intended to be used with no notice address changes.