PIC16F SSPADD Causing SCL To Go Low Early
From your code it looks like you are not waiting for SSPIF after setting the SEN. If I understand the data sheet correctly, you need to wait for SSPIF before attempting any 'next' operation, where START, ADDRESS, DATA and STOP are all operations. So it should be something like:

Start
wait for SSPIF and clear it
Send Addresss
wait for SSPIF and clear it
loop while more bytes:
  Send a byte
  wait for SSPIF and clear it
Stop


SSPIF was meant to be used from an interrupt handler, but you need a way to know that an operation is finished, so you might use it any way. If there is another signal that indicates the IIC operation is finished, you can use it as well.

Why I think your code 'almost' works is because setting SSPADD after SEN, gives the IIC engine time to complete START, so then sending the address works even though you did not wait for SSPIF. If you remove SSPADD (or move it), then two operations, START and ADDRESS are too close together, and the IIC engine ignores the ADDRESS command.