In addition to what @[email protected] says, another problem is that each software prefers to implement things in their own way, and not in the way that would be most compatible with other software. This is partly the fault of Activitypub, because its such a generic protocol that the same information can usually be represented in many different ways.
Another big problem is funding and thus developer time. Only few devs are paid to work on Fediverse software, and its not enough to keep up with all the work. So compromises have to be made, and often a nice user interface or other features are seen as more important than perfect federation.