I know a lot of people have had success with this excellent program Texture Set Combiner. I have come close to figuring this out, but not quite...
Common issues I have ruled out:
Within TSC, I have successfully merged the diffuse/base color material-layers into a single material, but that's because it enjoys the benefit of having an alpha channel, so it's easy to just combine those together and call it done.
But for all other materials, I had assumed it would use the diffuse/color channel as its alpha-basis, but this has not been the case. All my exported other material elements are basically whatever the last in the stack was since its color information would fill the entire canvas area.
I feel really close, but am stuck at this part.
Thanks in advance for your help.
An alternative is to use an ID map when baking, to identify each texture area, then just export as a single set of maps.
I do that from Blender by creating a model with several textures, giving each a separate material colour and unwrapping to make sure no islands overlap. I name that xxx.high and export from Blender it as fbx
I duplicate the model and replace the separate textures with a single texture (name it xxx.low) and export that from fbx
I import the "low" model to painter and bake using the material colour from the high model (same process as low/high poly but in this case the poly count is the same)
Drop the materials onto the surface with Ctrl+Drag so they are masked to that material ID
When done, export the maps as a single set
No external programme required
The TextureSet Combiner (https://christena.gumroad.com/l/TextureSetCombiner) worked okay, but doesn't support Unity's MaskMap, so I had to do extra steps in Designer (RGBA Split - Merge) but for some reason my Normals were low bits.
After reading davescm's comment, I ended up with this workflow (Blender + Substance Painter)
Assign the same material to all parts, create 1 texture, go to Texture Paint and choose "fill". Fill each part with a unique color, export that and use as ID map in Painter. So you only need 1 texture and 1 fbx. and don't need to use the low poly as a bake-source.
What really helped me was the "ctrl+drag" that makes the ID map work - thank you!