__gap isn't necessary in new OZ implementations?

OpenZeppelin Contracts v5 uses namespaced storage according to ERC-7201. For your own contracts, you can use either regular variables with storage gaps, or namespaced storage. See Must a child contract use the namespaced storage pattern