This difference in the synthesized design is due to the addition of the DONT_TOUCH attribute in the signals/entity of the 3-state I/O buffer.
Since 2014.2, this attribute has become more restrictive and preserves HDL code as it is defined.
The attribute is applied in the IPI flow by Vivado via a file called "dont_touch.xdc", the purpose of which is to preserve all of the pins from the BD design.
This can be observed at the beginning of the Synthesis.rpt file.
To avoid the incorrect inference of logic from Vivado you can instantiate the OBUFT + IBUF directly.
An iobuf.vhd file is attached to this answer record.
|Name||File Size||File Type|