Hey Peter,
What you're running in to is the fact that populate() constructs a query using that attribute string, and we don't support typecasting in a projection. see https://bitbucket.org/ftrack/ftrack-python-api/src/23f582cd146e71f871ba8a17da30c0ad831de836/source/ftrack_api/session.py#lines-1070
We do support passing a list, tuple or QueryResult, so my workaround would be something like the populate line in this snippet. The rest is just included to set up my example / test.
shot = session.query('select children from Shot where children is_not None').first()
session.populate(shot['children'][:], 'status')
with session.auto_populating(False):
print(shot['children'][0]['name'])
print(shot['children'][0]['status'])
I suppose the root cause of all this is that children maps to Contexts, which can include Projects, which themselves do not have statuses.