You should never display in orders grid values that might change over time.
A customer attribute is one of these things.
An order should be a "snapshot" of how things were at the moment the order was placed. (the status may change after that and the billing and shipping address. But the customer data and prices should not change.)
That's why the customer name and group and e-mail are cloned on the order instance.
Instead create a new column in the
sales_flat_order table and
sales_flat_order_grid table that should hold the value for that customer attribute at the moment the order was created.
If your customer attribute is called
some_attribute then your column name should be
Clear the cache after you add the column.
Now all you need to do is port the value of that attribute to the order object.
In order to do that, you need first to copy this value to the quote object.
For that you need to add the same column on the
sales_flat_quote table using the same name
After you created these columns just add in one of your config.xml this inside the
<to_quote>customer_some_attribute</to_quote> <!-- this will copy the value to the quote object from the customer account -->
<to_order>customer_some_attribute</to_order> <!-- this will copy the value from the quote to the order -->
Now, because you have it as an order attribute you should be able to easily add it to the grid.
An other good side of this approach is that you will see that attribute value in the order details page in the backend under the customer name and email without needing to code anything else.
I know it sounds a bit complicated, but this is the cleanest way to do it. If you take it step by step there shouldn't be any problems.