theme('radios',$variables['element']) not working
A radios form field uses a process function (form_process_radios()) which is the function that expand the form element, and add its child elements (the single radio elements a radios element is made of).
When you call theme(), that process function is not called, and those child elements are not added.

theme_radios($variables) executes the following code.

  $element = $variables['element'];
  $attributes = array();
  if (isset($element['#id'])) {
    $attributes['id'] = $element['#id'];
  }
  $attributes['class'] = 'form-radios';
  if (!empty($element['#attributes']['class'])) {
    $attributes['class'] .= ' ' . implode(' ', $element['#attributes']['class']);
  }
  if (isset($element['#attributes']['title'])) {
    $attributes['title'] = $element['#attributes']['title'];
  }
  return '&lt;div' . drupal_attributes($attributes) . '&gt;' . (!empty($element['#children']) ? $element['#children'] : '') . '&lt;/div&gt;';


As $element['#children'] is not set, what you get from theme('radios') is an empty &lt;div&gt; element with some CSS classes, and attributes.

Differently, when drupal_render() is called:


Any #pre_render, #process, #theme_wrappers, and #post_render function is called
Any child element is rendered