Well the reason those blocks are normally not breakable and re-appear is because the server is telling your client that the block is unbreakable. In lag the communication is slow, sometimes so slow that you are able to break lots of blocks and they appear to be broken on the clients side.