Just to update my last post, I've now figured out a way to get the dynamic groups to populate the correct devices. With the help of Graph I was able to see a few more properties.
At the moment the following queries work for me:
Android Fully Managed:
(device.managementType -ne "mdm") and (device.deviceOSType -contains "Android")
Android Work Profile (Corporate Devices):
(device.managementType -eq "mdm") and (device.deviceOSType -contains "Android") and (device.deviceOwnership -eq "Company")
Android Work Profile (Personal Devices):
(device.managementType -eq "mdm") and (device.deviceOSType -contains "Android") and (device.deviceOwnership -eq "Personal")
The Fully Managed devices actually show up with the management type of 'googleCloudDevicePolicyController' but this wasn't getting picked up in my query, so I've just had to do a 'not equal to "mdm"' query instead.