Get term name without a foreach loop

What about using:

echo get_the_term_list( $post->ID, 'artist-genre', '<li>', ',</li><li>', '</li>' );

instead, to generate the HTML list?

Or simply:

the_terms( $post->ID, 'artist-genre', '<li>', ',</li><li>', '</li>' );

that’s a wrapper for get_the_term_list().

Also notice that you’re missing the is_wp_error() check, in your code snippet, because wp_get_post_terms() can return the WP_Error object, for an unknown taxonomy. But the the_terms function takes care of that and returns false in that case.