wp_get_object_terms() isn’t the problem. the_taxonomies() is doing the outputting; it doesn’t return anything.
So, your code is equivalent to:
the_taxonomies( 'before=<ul><li>&sep=</li><li>&after=</li></ul>' );
wp_get_object_terms( $id, null );
Now, if you go to wp-includes/taxonomy.php you will find the dot in the_taxonomies() source.
To remove the dot, you need to add a filter:
function remove_the_dot($template) {
return '%s: %l';
}
add_filter('taxonomy_template', 'remove_the_dot');
In case you’re wondering, yes, this is an akward way of doing things.
In WP 3.1, you can modify the template simply by passing it as a parameter:
the_taxonomies( array(
'before' => '<ul><li>',
'sep' => '</li><li>',
'after' => '</li></ul>',
'template' => '%s: %l'
) );