Have been testing a couple days now and the following gives the most accurate results for what I am trying to achieve
placePrefab.transform.rotation = Quaternion.FromToRotation(Vector3.forward, zNormal);
However there is often a very slight ‘tilt’ in the end result.
ie I start with a cube that is perfectly parallel to the floor but wrong y rotation.
I end up with a cube that has the correct y rotation (perpendicular to a given wall) but often has a slight tilt in x or z axis. ie no longer perfectly parallel to the floor.
If I could somehow constrain my Quaternion rotation to just the y axis it would eliminate this slight error in the end result.