Native system transfers have a fixed gas cost. Calling system contracts by their hashes also has a fixed cost.
If two calls with different arguments but for the same hash show different gas costs, it is a result of executed Wasm code. Different arguments may lead to different code paths and executed opcodes. You cannot predict the number of executed opcodes or host functions.
If the calls use the same arguments, yet the cost is increasing, you might consider reviewing your global state usage. There is a chance that you are reading a collection from the global state, updating it and writing back with a larger size.