It's definitely related to size, it's "always" like that because human size is greater than any weapon's MINIMUM_SIZE.
That's not so. Elves can use crossbows but I've never had them pay double for them. I think humans just like weapons.
Well, I definitely can change the race of the caravan and see that prices change only depending on the body size.
I wouldn't be surprised if there was a size component, but there is also a human preference for weapons. In vanilla, without trade agreements, humans always value masterwork bone crossbows at 240 DB, elves always value masterwork bone crossbows at 120 DB, and dwarves always value masterwork bone crossbows at 120 DB. All three races wield crossbows one-handed.
Are you hacking the caravan races in-place? It might be that they're still using the entity-level prices for whatever they belonged to when they spawned.
Found this one - it's because of [SPHERE_ALIGNMENT:WAR:512]
So for weapons, the price (actually, only the base value without improvements) is multiplied by (SPHERE_ALIGNMENT:WAR / 256) if race body size >= weapon MINIMUM_SIZE. Ok, now to the armor...
For armor, it seems, the price is increased if armor level > 0 and body size >= 7 (this is strange).
For shields, the same regardless of body size.
For ammo, the price is always increased.
No other SPHERE_ALIGNMENT values seem to affect any prices.