I certainly expect them to be driving the phone they are developing for - in the case where a single team is doing both iOS and Android - yes, I expect them to be using both consistently (and I argue for issuing both at companies where I've led mobile teams).
I've been down the whole "we'll just test it in a vm" path, and it works... if by works you mean you get a happy path test every once in a while, and devs make sure the automated tests pass.
It doesn't instill the same level of care and attention that daily use gives. Dog-fooding is not a joke. It's genuinely hard to make a decent UI for a platform if you're not using that UI often, and in real situations.
I've literally gone as far as making devs switch device personas over time on my mobile teams. They get an assigned device from our test pool for the sprint from a list like
- High end stock android device with large screen
- High end stock android device with small screen
- High end Samsung ROM device with large screen
- High end Samsung ROM device with small screen
- Mid tier stock android device with large screen
- Mid tier stock android device with small screen
- Mid tier Samsung ROM device with large screen
etc... down to the devices no dev wants at all, like
- Amazon Kindle Fire default
- Amazon Kindle Fire kids
and they do all their dev/testing/use on it.
It works fucking wonders in suddenly making them care about things that were previously just "meh" problems. Two weeks stewing in their own problems on a device they were ignoring is one hell of an incentive.