PIC18, I2C Master Receive, Cant Read from SSPBUF to a Variable
I can't be sure, but I suspect the PIC is latching the address into SSPBUF, and once you read that it will then put the data there.  So if you read it a second time, you'll get the data. Note that in your second example, you call DS1307_Read_Seconds(), which tries to read it, and then you read SSPBUF which would be a second read from that register.