you can try a much less elegant but a working solution which is to get all of the users posts and count their categories:
$query = new WP_Query(array(
'author' => $curauth->ID,
'posts_per_page' => -1
)
);
if ($query->have_posts()){
$u_cats = array();
while ($query->have_posts()){
$query->the_post();
$terms = wp_get_object_terms( $post->ID, 'category');
foreach ($terms as $term){
if (is_array($u_cats[$term->term_id])){
$u_cats[$term->term_id]['count'] = $u_cats[$term->term_id]['count'] +1;
}else{
$u_cats[$term->term_id]['count'] = 1;
$u_cats[$term->term_id]['name'] = $term->name;
$u_cats[$term->term_id]['ID'] = $term->term_id ;
}
}
}
//Now $u_cats is an array of categories each with name, ID and author post count for that category
$x = 0;
?>
<ul class="category-list">
<?php foreach($u_cats as $category) :
if( $x%2 ){ ?>
<li class="odd">
<?php } else { ?>
<li>
<?php } ?>
<a href="https://wordpress.stackexchange.com/questions/21581/<?php echo get_category_link( $category["ID'] ); ?>" title="<?php echo $category['name'];?>"><?php echo $category['name']; ?></a>(<?php echo $category['count']; ?>)
</li>
<?php $x++; endforeach; ?>
</ul>
<?php
}