Here is some additional information after further testing:
Taking a BLE edition Sphero as an example, on an actual Android device, both BLE Scanner and nRF Connect are in agreement that this device advertises 6 services:
Generic Access (0x1800)
Generic Attribute (0x1801)
Device Information (0x180A)
+ 3 Custom/Unknown services (128-bit UUID)
On Android M running on ARC++ on a CB3-431, BLE Scanner shows no profiles, while nRF Connect shows 5. The Generic Access (0x1800) one is missing from the list while all others are present. My understanding is that Generic Access service is mandatory per the spec, so perhaps BLE Scanner also gets back a list of profiles that omits 0x1800, and when it is not present, it gets confused and simply renders a blank list as a result, while nRF Connect at least reports all of the services that are returned to it.
Another thing to note is that sometimes an Android app running on ARC++ will be unable to perform a BLE scan. No devices show up. This happens for both BLE Scanner and nRF Connect. When this happens, it can be worked around in one of two ways:
1) Click the status area on the shelf, click on Bluetooth.
2) Start a crosh shell, go to bash, 'sudo bluetoothctl', issue 'scan on'.
Basically, when underlying Chrome OS starts a Bluetooth scan, all of a sudden the running Android app begins to get scan results back. It seems to me to be a bug, though, that you have to "wake up" Bluetooth on Chrome OS manually before Android apps start working. Not sure if this is related to the missing service though.
I will "Report an issue" with these findings.
-- Nathan