SPI Clock on PIC unstable
This is a guess, but you are probably resetting something you shouldn't be each byte.  Things like the bit rate generator and the general peripheral configuration should only be set once.

Added:

You now say that you couldn't get MSSP1 to work but did get MSSP2 working.  That hints that you have a bug elsewhere in the code that is doing unintended writes.  It happens to be hitting some MSSP1 state, which is why it acts strangely and why MSSP2 works.

Don't just let this go.  Moving to MSSP2 may appear to have fixed the problem, but at best you have worked around it, probably temporarily.  Next time you link with things in different places, different memory may get scribbled on.  If you don't find and really fix this, this firmware will be forever flaky.  The worst case is when there are no obvious symptoms doing you the favor to making it clear there is a problem.  The problem will then appear a year later when just the right data is encountered, only a customer sites, after 1000 are in the field.  FIX THIS THE RIGHT WAY NOW.