To me it’s not a choice of one versus the other. I have a couple of projects that have custom React components. I render those components on the front-end, and also import and use the components within the Gutenberg block. That way they share code, and stay dynamic.
I can even put children blocks within the custom component, and it will render. Especially handy for things like InpectorControls.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.