I should not have made this comment, it's immaterial.

There is no range limit on the values of operands. There is only a size limit on which byte vectors can be converted to integers.

How about:
* Only the CScriptNum constructor check the vector size (if arg.size() > 4 throw scripnum_error).
* The + and - operators get an assertion that prevents int64 overflows.

I think that should be all?