Now that Magento 2's been out for a year plus -- what's "state of the art" in getting product information into the system? i.e. Are people still writing one-off import scripts? Is the native import/export sufficient? Is there a third party module that's great for this? Third party services? etc.
I don't think there is such a thing as "state of the art" import tool for M2 at the moment. But I can say since 2.1.4 (afaik) we have been using the native importer for products and for our use cases it worked just fine. We had to spend some time preparing and fixing input data but in the end, it just worked.
Also worth saying that we had a lot of troubles trying to use it pre 2.1 but given recent experiences (2.1.4 or newer) in my opinion it's ok.
If you are a brick and mortar using Quickbooks POS, Webgility is nice. It may not be state of the art, but I use webgility ECC, but that's been replaced with Webgility Unify. I haven't tried Unify, as it's a lot more per month than we can justfy at $500/mo.
The ECC (Old Version) is pretty nice. Easily transfer products, syncs inventory, and is easy to use for shipping. Posts back to store and post to QB sales and hasn't once, in 3 years, allowed a sale of an item that was out of stock in the physical store. As soon as someone buys something in the shop, the ECC module updates the online store in almost real time and that's pretty amazing, mainly during the shopping holidays.
Our catalog is indexed in ElasticSearch, and we're using M2's REST API to push products that are newly created. With ES, we can keep track of which products were created, and their current state.
This way, if we add new items, delete, or update them, our indexer can tell whether to create new products or update existing ones via the API.
We wrote a wrapper for "FastSimpleImport2" which allows us to use CSV-, SQL-, XML- or other data sources. The target was, that every importer in every customer project follows the same steps and structure.
So if you want to create a new import, you just have to implement some classes which extends our base classes and you just have to fill some abstract functions. Everything else is handled by the base classes.
We had the issue in Magento1, that every import for every customers was completely different (how to call, where to call, which parameters, shell vs backend). So this was an important step for us to get every project on the same level.
But I can't tell you if this is "state of the art". What I can tell you: the "normal" backend-import is completely useless for our workflows (since our most customers use scheduled/automatic imports with a wide range of data sources and types) and products are not maintained within Magento.