Эта проблема не только с радиос, а почти со всеми элементами формами, для которых необходимо поменять #default_value на ajax callback, можете првоерить сами для теста. Извращения в первом случае нужны для того, что бы при каждом рендере элемента, менялся родитель и тем самым очищался так сказать ввод, во втором случае мы его и очищаем с помощью unset($form_state['input']);
Первый вариант я написал, потому что видел такое решение в нескольких контриб модулях.
Проблема с элементом radios на форме при попытке обновить через ajax
Эта проблема не только с радиос, а почти со всеми элементами формами, для которых необходимо поменять #default_value на ajax callback, можете првоерить сами для теста. Извращения в первом случае нужны для того, что бы при каждом рендере элемента, менялся родитель и тем самым очищался так сказать ввод, во втором случае мы его и очищаем с помощью unset($form_state['input']);
Первый вариант я написал, потому что видел такое решение в нескольких контриб модулях.
Проблема с элементом radios на форме при попытке обновить через ajax
Рабочий вариант #1: