Modx Revo API как разобрать массив получаемых пользователей?
Всё очень просто,  $user это не тот объект, который вы ожидаете. Объект UserGroupMembers связан с объектом modUser по полю member, соответственно надо делать так
foreach ($users as $user){

// получаем id пользователя
$uid = $user->get('member'); 
// получаем объект пользователя
$user = $modx->getObject('modUser', $uid);
// получаем имя пользователя
$name = $user->get('username');
// получаем профиль пользователя
$profile = $user->getOne('Profile');
/****тут остальной код*****/
//end for each
}
Сделал так:

$group = $modx->getObject('modUserGroup', array ('id' => '5'));
$members = $group->getMany('UserGroupMembers');

foreach ($members as $member){
$user = $member->getOne('User'); // важно
// получаем имя пользователя
$name = $user->get('username');
$uid = $user->get('id');
// связь с профилем пользователя
$profile = $user->getOne('Profile');

....

}