Just my opinion on this issue:
In general, pjsip works fine with endpoints but has problems with some trunking providers and interface devices; there are of course a few exceptions.
For many users, pjsip’s ability to handle multiple registrations is a major benefit, allowing them to have multiple devices with the same extension number. It is also far more robust with mobile apps that switch between local and push server registration and/or between Wi-Fi and mobile data.
Many small systems are on-site with dynamic IP addresses and flaky internet connections. The inability of chan_sip to properly handle DNS SRV records and DNS failures makes pjsip the obvious choice.
Of course, pjsip lacks certain features (tel URI, identify by port, etc.) that renders it completely inoperative with some trunks and devices. Obviously, these should use chan_sip.
IMO problems with using both drivers are very rare. I’m aware of only one provider (Vitelity) and only when used with IP authentication, where the PBX must bind to port 5060.
All of the above relates to features. Bugs are a different animal. I’ll admit that pjsip is presently inferior. There are two open threads about Contact headers intermittently presenting an incorrect address. These guys are in different countries, with different providers and different firewalls. Unfortunately, neither has been helpful in tracking down the bug, so it’s hard to get it fixed.