Company is a customer_address attribute, therefore you have to decide wether it should be from the shipping or billing address or join both like the rest.
And group name, like this:
$collection->joinTable($collection->getTable('customer/customer_group'), 'group_id=customer_group_id''customer_group_id=group_id', array('customer_group_code'), null, 'left');
Didn't tested it ;-)
It is important to set as the condition the column of the joined table as first name.
I wrote a blog article about it: http://blog.fabian-blechschmidt.de/articles/Joining-a-flat-table-on-EAV.html