The piggy backing won't affect the operation of the business object... when the ListView builds the list, it uses the "Item" property on the business object to pull the data from the business object by field name. The item property goes through this methodology:
1. Search for the fieldname in the existing PropertyDescriptors collection. If found, return the value.
2. Search for the fieldname by reflecting the business object for the property name. If found, add a property descriptor, then return the value.
3. Search for the fieldname within the columns of the internal data table. If found, add a property descriptor, then return the value.
So, the only thing you're going to have is a few extra property descriptors in your PropertyDescriptors collection (which isn't a bad thing). And as you can see, once a field is found, the location of the data for that field name is cached, so the Item property doesn't have to go searching for it again. So, you have a couple microsecond delay when you reference the column the first time, but after that, it's just as fast as anything else.
This functionality was added mainly because when we build ListViews, we invariably end up adding extra columns to the return data for display purposes; generally the results of aggregate functions in SQL Server. I.e.: we create a list of the customers in the database, and add a cust_count field that counts the users by last name (COUNT(cust_lname) AS cust_count). When we do this, we can manually type in cust_count and don't have to create a view or remap the business object.