Yea a bit unclear but I think I understand what your trying to achieve. It’s displaying that like most likely due to css. You could target it with a CSS3 pseudo-selector
.sidebar a { float: left; }
.sidebar a:nth-child(4n-0) { clear: left; }
OR.. this might work, no promises though because I can’t see your css.
if(is_category()) {
$thiscat = get_term( get_query_var('cat') , 'category' );
$subcategories = get_terms( 'category' , 'parent=".get_query_var("cat') );
$items="";
$breakpoint = 1;
if(!empty($subcategories)) {
$items .= '<div class="sidebar">';
foreach($subcategories as $subcat) {
if($thiscat->term_id == $subcat->term_id) $current=" current-cat"; else $current="";
$items .= '<span class="sidebar_content"><a href="'.get_category_link( $subcat->term_id ).'" title="">'.$subcat->name.'</a></span>';
if($breakpoint %3 != 0 && $breakpoint != count($subcategories) ) {
$items .= '</div><div class="sidebar">';
} elseif($breakpoint == count($subcategories)) {
$items .= '</div>';
}
$breakpoint++;
}
echo $items;
}
unset($subcategories,$subcat,$thiscat,$items);
}