The Lemmy API doesn't combine duplicates/crossposts together and requires it to be done client-side by detecting duplicate URLs when calling getPosts() to generate the feed. This means most apps that do roll up crossposts can only do so for ones that come through in the same API fetch. It's possible to roll up crossposts across different fetches, but having done that in Tesseract, it causes more user confusion than just letting it be a duplicate.
I've got a natural bias towards Tesseract because I build it, but it does roll them up both by URL and by title. The latter covers cases where someone posts identical things to different communities that don't use a URL, such as questions to the Ask communities. No bonus points because it still doesn't support Piefed, and it's not looking like that's going to happen any time soon.