Should a pure function take all of the functions it calls as arguments?
No, f doesn't have to take g as an argument.  Wikipedia's definition is a bit informal.  Also informally, the behavior of a pure function is also allowed to depend on the code of the program.  Or, to put it another way, the code of the program is considered fixed, not something we vary, so we don't try to track dependences on it.

So, something like f(x) = 2*g(x) is fine: if g is pure, f will be too.