This one is an accident of railway history. There is a clue in the name of the junction where the two lines meet.
The Liverpool Street line came first, built by the Eastern Counties Railway and opened in 1845. The line to Shepreth, opened in 1852, was also built by the Eastern Counties Railway, hence the name Shepreth Branch Junction. The Eastern Counties Railway already had a station on the Liverpool Street line and would have seen no need for another on the branch.
Foxton wasn't always the first station on the branch, there was a station at Harston until 1963.
You are right that Cambridge South will make it easier for people to travel between Shelford and stations on the Kings Cross line.
Finally, strictly speaking there is no place called Shelford, though it is in common local usage. Great Shelford and Little Shelford are the proper names of what were originally two separate villages. If ever there was a station on the Kings Cross line, then that could be Little Shelford. I don't know why the existing station wasn't named Great Shelford, after all the Eastern Counties Railway had no trouble with having a station called Great Chesterford not far away.