In the development of ActivityPub, we originally had an endpoint called `publicInbox` for the second problem -- propagating public activities. But when we started working on the optimization issue, we defined a `sharedInbox` also. Here's the key point: we actually combined both features in one endpoint.
So, in the ActivityPub spec, talking about the public propagation of activities, we used this language:
> Additionally, if an object is addressed to the Public special collection, a server MAY deliver that object to all known sharedInbox endpoints on the network.
That "MAY" is important. It says that the sending server *can* do it, but it doesn't *have to*. This leaves it open to interpretation by implementers.
If you have a fediverse account, you can quote this note from your own instance. Search https://cosocial.ca/users/evan/statuses/115894929724223793 on your instance and quote it. (Note that quoting is not supported in Mastodon.)