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:
I know that I need to select a PBR format that includes the alpha channel
I know that each material has to have opacity information in it in order for that channel to be generated
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.
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
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!