Существует большая разница, и я попытаюсь объяснить это.
UDT are awesome, если вы не указали «строго типизированные» поля в схеме CQL. Вы можете использовать UDT как часть основного ключа (кластерный столбец), а также добавлять и переименовывать поля. Недостатком является то, что при выполнении выборок вы всегда выбираете весь UDT, и вы не можете удалить поле. Не переусердствуйте с использованием, потому что они ад, особенно для тех, которые используются в разных таблицах.
Использование серийной строки JSON хорош для некоторых случаев. Я даже слышал, как люди сохраняли сжатые данные в полях (protobuff) для решения своих проблем (я думаю, что об этом говорил кто-то из Soundcloud). Проблема с JSON заключается в том, что они не печатаются и вам нужна дополнительная логика приложения для обработки сериализации и изменений данных. Это также означает, что вы можете иметь переменную структуру и вставлять только те поля, которые вам нужны.
В конце концов, о ваших предпочтениях, пока вы понимаете плюсы и минусы обоих подходов.