You are maybe running an old version of WordPress (before 4.5).
Before WordPress 4.5.0, the first parameter of get_terms() was a taxonomy or list of taxonomies and since 4.5.0, taxonomies should be passed via the ‘taxonomy’ argument in the $args array (that what you are doing, it should work like that).
You will find all the details about these changes in the get_terms() reference page.
UPDATE :
Sorry, I verify my code, and I use get_categories() not get_terms, and that right get_terms() don’t work !
here is a working example to list all my product_cat
$product_categories = get_categories( array(
'taxonomy' => 'product_cat',
'orderby' => 'name',
'pad_counts' => false,
'hierarchical' => 1,
'hide_empty' => false
) );
Hope it helps !