Tu invii tramite POST la variabile rId a modal.php (anche se poi di fatto invii una stringa con all'interno anche rId), dopo richiami modal.php per caricarne il contenuto dentro al modal.

Il problema è che lo stato di modal.php non è persistente, tu lo chiami 2 volte, la prima in cui la variabile rId è settata tramite ajax dal tuo script, la seconda in cui non lo è, perché di fatto richiami solo il codice della pagina senza passare dati.

La funzione $.load() supporta anche l'invio dei dati (tramite POST se il secondo parametro è un oggetto) alla pagina che viene caricata, potresti fare così:

codice:
function subModal(rId){
        $("#myModal").on("show.bs.modal", function(e) {
            var link = $(e.relatedTarget);
            $(this).find(".modal-body").load(link.attr("href"));
        });
        if (confirm("Rispondi?")){
          $("#modalPag").load("modal.php", { "id" : rId });        }
        else{
            return;
        }
}
E dovrebbe funzionare (anche se non ho provato).

Se vuoi farlo utilizzando $.ajax() allora devi fare in modo che modal.php ti restituisca come risposta alla chiamata ajax il codice html che vuoi inserire nella modal, e a quel punto caricarlo nella modal, magari tramite la funzione $.html()