This predicate (correctly) does not complain for cases like these:
What is inside maplist/3 on argument position 1 looks like a call to a one-argument predicate prefix/1, but is really a call to a 3-argument predicate prefix/3 as the call is augmented with an element from each of the lists ListIn and ListOut at runtime. And prefix/3 exists. Good.
test(Const,ListIn,ListOut) :- maplist(prefix(Const),ListIn,ListOut). prefix(Const,StringIn,StringOut) :- atomic_list_concat([Const,StringIn],StringOut).
If it does complain for your own meta-predicates, you probably have the wrong "number of additional arguments" in your meta_predicate/1 declaration.