Generally, you can't use nested properties on an array path set. You'll have to get the top level parent path 'config.hardware.device', then enumerate that. If you're doing partialUpdates on RetrievePropertiesEx or WaitForUpdatesEx, you'll get the change as config.hardware.device[-key-].macAddress.
If you're doing full updates or on time retrieves, you'll have to get the 'config.hardware.device' array, enumerate it in your code and extract the macAddress form the VirtualEthernetCard device objects.