I'm not sure if is deliberate, but the way hooks have been implemented in Exp:resso Store don't seem to allow the modification of data?
Using pass by reference has no effect (because of EE's hook calling approach?); any changes made to the data passed in the params is not available in the same variables in the hook calling method.
And there doesn't seem to be any point returning data from the extension method because there is no assignment in the Order model's addItem method, where the hook is called.
Are the hooks designed to expose data for reading-only? If I have to start hacking the Store logic code to add an assignment, or messing about modifying the records in the database, then the likelihood of functionality breaking with an update is high.
I'm disappointed this type of situation wasn't envisioned by the module developers. Why limit the hooks like this?