Some more input/feedback on this topic.
I had another good discussion with a customer today. They use a number of tools for asset discovery.

As you can see from the diagram, they feed everything they can into a ServiceNow CMDB. They use BMC ADDM to discover data on servers and network equipment. It can identify virtual servers, and associate those virtual servers to their host. It also will define the storage volumes mounted to a physical server, along with GB allocated and GB used. Number of CPU's, Number of Logical Cores, and number of threads from each logical core is all in there as well.
They use SCCM to discover end user PC items, and the applications on those. They have a third tool from Flexera Network Management that does discovery on some other end user PC hardware. I'm not sure why Flexera is employed for this, can Microsoft SCCM not discover mac's and ipads?
One of their big challenges is applications. Their SCCM discovery will return thousands of unique application names, but the data is "dirty." The same application might be named 10 different ways. ADDM can also be configured to collect application data, but the application naming coming from ADDM can have a similar problem. Their long term plan is to somehow use Flexera to "normalize" their application naming conventions prior to loading into ServiceNow CMDB.