I think XMPP is a nice supplement to ActivityPub instances for more private chat. You can quite easily hook the user database of Mastodon or Lemmy to an XMPP server and have the same user address work for both that way.
XMPP via its pubsub implementation could function similar to ActivityPub, but that part of XMPP is a bit neglected as few apps use it for anything more complex. XMPP's real strength is in real-time communication and I think it's good to stick with that.
From my understanding developers often complain about activityPub. Can we really say that it "just works"? Federation and interop issues are common as well.