First, I shouldn't have said "need" that is too strong of a word. Nostr can keep going without breaking changes.
And in part I'm speaking in the abstract based on experience, based on the number of breaking changes that have happened so far and their approximate rate.
But I think some of the big things below app level are subkeys (for an offline masterkey) through something like a slightly modified NIP-26, binary events over websocket binary, something like negative filters or negentropy (specifics to be worked out), some kind of better relay usage for the many basic usages that actually exist (Vitor is working on that), ... that is off the top of my head.