That's the fundamental difference between Bluesky and the fediverse. Bluesky tries very hard to emulate the current commercial television-like passive-consumption entertainment-ass social media. Fediverse, on the other hand, takes an old-school user-friendly approach where you see the posts from people you follow, in the order in which they were made, and nothing else at all. If you really insist on seeing random posts from people you don't know, there are local and federated timelines.
So since Bluesky assumes that most users want to see posts by strangers chosen by some sort of algorithm, which picks them out of the entire pool of content on the platform, then, well, you need the entire pool of content on the platform to pick posts from. Hence the unwieldy "shared heap" architecture. ActivityPub's publish-subscribe approach would've been a serious nuisance if you were to build such a product on top of it.