Naturally, I love the seamless integration into the Drupal platform, it's as simple as installing a module... cause it is. :)
There's a great option to have an AJAX enabled "single page checkout", which will do all the processing needed on that page.
This is a great option if you know you need a shopping cart but are unsure of what your payment gateway will be, DrupalCommerce integrates nicely with all major credit card options, Authorize.NET, PayPal, etc. Again, just install the module that you need.
There's a slight learning curve when it comes to terminology for this.
Everything is node based as usual, but you'll have a structure of "Products" and then "Product Displays". At firs,t you'll think they're one of the same, but ... a Product, is a Shirt, XL in Red. Then you use the Product Display to showcase (and template how you like) that Shirt in XL Red. But what if you have another size? Then you need to create another Product to display in the Product Display.
It's a bit of a pain to be honest, especially if you have a slew of items, but the benefits for it are a better means to track your inventory.
But you can definitely tie into Commerce_Hooks and alter what you need.
Though robust compared to what is was (ubercart), there's still that feeling of... lacking.
If your site is a content site that will sell goods and services, then dive all in, you'll need the integration with your other content.
If your main goal is to sell and then tie in a blog down the road, Magento might be a better option for you.
Giving a client a reasonable, streamlined shopping cart that will work with the Drupal Bootstrap site they already have in place.
The expansion and customization via hooks and templates are great. "Recently viewed" and "Other's purchased" options are things clients want now-a-days, and this gives me the option in my native Drupal environment.