I think the most simple approach (if you’re able to add some JS) is to use custom classes for your buttons and blocks that can be settled through advanced settings in block editor. Then a really basic JS snippet can do the trick.
Here’s an example in vanilla JS with an IFFE that takes care of waiting for DOM to be loaded : https://codepen.io/liqueurdetoile/pen/dyjEYEP
Obviously class names have to be chosen wisely to avoid any trouble.
EDIT – You can also use any accordion block for Gutenberg to achieve a similar result. There’s plenty available as plugins.