El problema ocurre porque dentro de cada método, invocas al otro utilizando la palabra reservada 
this cuando en ese ámbito este ya cambió pues al ser desencadenado por el evento 
click en el botón, este sería el nuevo 
this. Una alternativa de solución consiste en que crees una copia de la clase en una variable e invoques a sus métodos tomándola como punto de apoyo.    
Código Javascript
:
Ver originalvar Pagina = function () {
    var parrafo = document.getElementById("publicacion-texto"),
        boton = document.getElementById("btn-remover"),
        self = this;
    
    this.restaurar = function () {
        parrafo.style.display = 'block';
        boton.removeEventListener('click', self.restaurar, false);
        boton.addEventListener('click', self.remover, false);
        boton.innerHTML = 'Haz click aquí para remover el texto';
    };
    
    this.remover = function () {
        parrafo.style.display = 'none';
        boton.removeEventListener('click', self.remover, false);
        boton.addEventListener('click', self.restaurar, false);
        boton.innerHTML = 'Haz click aquí para restaurar el texto';
    };
    
    this.agregarEventoBtn = function () {
        boton.addEventListener('click', self.remover, false);
    };
};
  
Saludos