Variable argument lists are not supported by COM. I think the COM part of your method is converted into:
void foo(string moduleName, object[] args) //note the missing params...
To call this method from COBOL, you need to pass an array of objects as the 2nd argument.
If you know the maximum #parms on forehand, an alternative can be that you define your method with this maximum #parms, where you specify them as optional to COM.
Missing parameters are passed as Type.Missing
.