If I understand you correctly, you are dividing the wanted data into two pieces, one of which has a static default and must be subject to priority lookup, and the other of which must be subject to an array-merge lookup. This naturally maps to two different Hiera keys. Moreover, I suppose you are targeting a master older than v4.3.0, since v4.3.0 has the resolution for
PUP-5395, and that would make it pretty straightforward to implement a solution based simply on two class parameters.
With that said, I don't think your solution is too bad, but as a stylistic consideration I do think it's poor form to put much logic into params classes. Personally, I would instead put most of it into the main class: