It does not add custom data to the returned array but will return also the given custom data. Every model can have data from the fields in the table and also custom data that you assign similarly to assigning a property to a object of type stdClass. These values can then be returned as well given the keys in the $custom array.
The ORM model uses the from_array() method. It optionally takes three boolean's as arguments, whether or not to include custom model properties, whether or not to recurse, and whether or not to include EAV values.
If you enable recursion you might get into an endless loop if children relate back to parents, so use that with care.
You can filter results using the $_to_array_exclude array. It doesn't have a setter, it was designed to define a static list in the model itself, so if you need more dynamic filtering, you need a setter method, either in the model, in a base model, or using a trait.