Consider the following case:
* A three part articulated vehicle
* Different capacities for each part (38, 27 and 38, total 103)
* Using callback 36 (change vehicle properties) and variable 40 (position in consist)
This works fine for the built vehicle (so far so good), however, this gives problems with displaying the correct capacity in the purchase menu.
One way to avoid this is not to have the articulated vehicle callback in the purchase menu, but (quoting Hirundu) this is not a good idea because if the vehicle pool is exhausted, vehicle building will fail halfway.
Now comes the actual problem with this if you have the articulated vehicle callback in the purchase menu:
* Variable 40 isn't available in the purchase menu
* I can return only a single value for cb 36 that applies to every vehicle part
* And basically the total vehicle capacity must be a multiple of the amount of vehicle parts and cannot be this 103 I had initially.
As this limitation doesn't apply to a built vehicle, it IMO shouldn't apply to the purchase menu either. Two possible solutions that come to mind:
* easy: always display the capacity property in the purchase menu, as the callback isn't reliable (this my break certain NewGRFs)
* more work: allow certain variable access (like var 40) in the purchase menu
This particular case is most likely not the only one with this problem. I haven't tested, but I suspect that the same will apply to other vehicle property callbacks.
Now I like to challenge you to either prove me wrong and show a working solution, or to come up with different suggestions to solve this problem

EDIT: noticed something else... If you don't do any of the property callbacks, just define an articulated vehicle. The weight and power of the vehicle is that what is set in the vehicle properties, but the capacity of the vehicle is the value from the properties multiplied by the number of vehicle parts (weight and power are not multiplied). Seems a bit inconsistent.