Hi,
Well there are some supple differences between the two chips, you can check on them in this document.
https://ww1.microchip.com/downloads/en/DeviceDoc/40048a.pdf
I built your code as it stated a 628 and programmed it into a 628 chip in its own dedicated socket with just the 5 pickit2 connections.
That worked ok, I read the data back ok, reprogrammed it several times ok.
Programmed it with another larger different program ok, then with your program again a few more times, all ok.
No idea about running it from 3v etc, but think your problem may be the breadboard and the long wires used.
The 628 /628A chips do seem to have a lot of problems as covered in the Microchip forums, so if you are using breadboard and their relativley poor connections you will be compounding any problems.
Try using a new 18 pin dil socket and a new 6 way set of 0.1" pins and solder the two together with some thin wire keeping them under 3" long.
Then program your chip with that, ensuring that the program code and chip are the same, unlike now where you appear to be using 628 code into a 628A chip - there might not be a difference, but you don't know for sure ..?
Long term perhaps migrate away from them an use a better chip like the 16F88