Why there is difference in datatypes for the object created in bpmn process vs dmn process

I would like to understand why there is a difference in datatypes for the objects created in dmn process vs bpm process
In my workflow process, our system calls bpmn process, inside the bpmn process, its calling a dmn process to do some validations
In DMN file
if the validations are not successful then I am constructing output object and use this output object and map decision result object in bpmn file
In BPMN file
Like wise, I am doing other validations in bpmn file, if the validations are not successful I am constructing new error object (error1) in bpmn file

when control leaves from camunda engine to Java API (service layer), below is the code in service layer

VariableMap variables = response.getVariables();
 Object objErrors = variables.get("errors"); // objErrors  is instance of ArrayList
 Object objErrors1 = variables.get("errors1"); // objErrors1  is instance of ScriptObjectMirror

why I am seeing different datatypes?
why variables.get(“errors”); is an instance of ArrayList, this is created as an outcome dmn validation
why variables.get(“errors1”); is an instance of ScriptObjectMirror, this is created in bpmn process
As a reference I am attaching both bpmn file and dmn file for reference

SampleInputValidation.dmn (2.9 KB) SampleProcess.bpmn (7.9 KB)