Our suspicions are confirmed! It would explain why none of John and Sophia's sons were named James after John's father.
I checked the GRO records for Rosina, which gave her mother's surname as Rolfe, which confirms your earlier findings. It really is a remarkable error on a marriage record. The names don't sound alike in the slightest. Perhaps Sophia sneezed as she gave her surname!
On the subject of Robert Rolfe- he gave his birthplace as "Thorpe, Berkshire" on the 1851 census. There isn't a Thorpe in Berkshire. The most likely place was Thorpe, near Egham, Surrey, 2 miles from Addlestone near Chertsey where Sophia was born.
Free Reg has the following baptism:
15 Aug 1784 • Egham,Surrey,England
15 Aug 1784 Person forename Robert Person sex M Father forename Robert Mother forename Ann Father surname ROLPH Mother surname ROLPH Notes Born 6 Aug.
In 1783 in Egham, Robert Rolf married Ann Tarant.
As I mentioned before there are other Rolf/e records in Chertsey and Egham, so it seems likely that was where Robert Rolfe was born and where he lived until Sophia's birth in 1822.