Proper WP conditional tag to check for existing taxonomies to list out terms with wp_list_categories?

is_tax() returns true on a taxonomy archive page, it has nothing to do with whether terms exist in a taxonomy.

you just need to add a check for anything returned from wp_list_categories before outputting any markup:

<?php
$args_list = array(
    'taxonomy' => 'productcategory', 
    'title_li' => __(''),
    'show_count' => false,
    'hierarchical' => true,
    'echo' => '0',
);
$product_categories = wp_list_categories( $args_list );
if( $product_categories ):
    ?>
    <div id="shop_by_cat">
        <ul>
            <?php echo $product_categories; ?>
        </ul>
    </div>
    <?php
endif;
?>