The first is for when the expression looks like an ordinary function call, i.e.
Object obj; obj(); // <-- CompileFunctionCall() needs to look for an opCall method in the Object class
The second is for when the expression preceeding the argument list isn't a simple symbol, but in itself another expression that returns an object that implements an opCall method, e.g.
array<Object> arr; arr(); // <-- CompileExpressionPostOp() needs to look for an opCall method in the Object class
The easiest way to determine what to change is by debugging the compiler while compiling a script you want to work.
While I'm not a big fan of call operators myself, I can still incorporate them into the language as they don't cause any negative impacts.