With Nostr, your identity isn't attached to a relay, so if one relay doesn't like you other relays will still relay your content, while still keeping your followerbase
It seems like optimal strategy is to send to/fetch from every relay possible. Effectively, every relay would host the whole network. In this regard federation seem a little more scalable.
> to "follow" someone a user just instructs their client to query the relays it knows for posts from that public key.
I don't know anything about Nostr, but couldn't that easily be solved by adding the relays that you use as a field in your event? Or even using a DHT to find relays that carry content from a particular user?