Он крут тем, что у тебя для всего твоего проекта единая кодовая база. Если и фронтом и беком занимается одна команда (один человек), то это упрощает разработку и немного экономит время. Если ты раньше разрабатывал на React/Angular/Vue и два раза описывал все модели в начале на С#, а потом на TypeScript - тебе это точно понятно :)
Поддержка его в студии сейчас немножк фиговая. У нас на работе были ситуации, когда большая вложенность компонентов в одном файле сводила её с ума, и она убивала форматирование кода. Решилось разбивкой на под-компоненты с выносом в отдельные папки/файлы. Вроде мелочь, но не приятная (но это если ты вообще юзаешь студию).
И вообще, ты не можешь в одном файле объявить несколько компонентов. Когда речь о каком-то локальном хелпере который нигде не будет переиспользоваться - это досаждает.
Если тебе нужно сделать компонент с однотипным шаблоном для каких-то элементов (список, дата грид...) нужно использовать RenderFragment - они ограничены по сравнению с обычным React-овским {
list.map(item => <Row ...>...</Row>)}
После того как привык к, например, реактовским хукам, позволяющим в пару строк описать компонент с состоянием - приунываешь от того, сколько кода для этого же нужно написать в Blazor (и обязательно в отдельном файле).
Но первое преимущество в некоторых случаях может перекрыть эти недостатки, поэтому мне Blazor все равно как технология нравится, но в проде я, и в компании где работаю - его решили не юзать, пока что.