Nie wiem, czy dobrze wszystko zrozumiałem -- opis sugeruje, że Ajax wywołuje "funkcję PHP-ową" (a przecież w rzeczywistości może "wywołać" co najwyżej jakiś URL, tj. po prostu wysłać żądanie), która zwraca "tablicę PHP-ową" (a w rzeczywistości musi zwrócić jakiś tekst: zserializowaną tablicę, np. w JSON-ie, HTML-u czy innym formacie).
W każdym razie, słusznie zauważyłeś problem! Generowanie HTML-a i po stronie serwera, i po stronie klienta, to naruszenie DRY!
Poniżej jedno z możliwych rozwiązań.
Funkcja zwracająca tablicę PHP-ową zostaje jak jest, zgodnie z ogólnie rozumianą zasadą SRP. Zadaniem funkcji jest wygenerowanie danych -- i nic więcej!
Templatka w PHP przerabia dane na kod HTML.
Jakaś usługa, tj. skrypt PHP -- może to być kontroler lub funkcja istniejącego kontrolera -- przetwarza i odpowiada na żądania Ajaxowe. JavaScript puszcza Ajax do tej usługi zawsze gdy chce zmienić czy odczytać tablicę. Usługa ta robi swoje, tj. ewentualnie modyfikuje tablicę (jeśli Ajax tego żąda), po czym odpala funkcję PHP-ową i przekazuje ją do templatki. Ostatecznie, wywołuje więc i zwraca templatkę z nowym kodem HTML tablicy. Skrypty dostają ten kod i aktualizują tablicę.
Na tę chwilę zachowanie DRY, prostoty i innych zasad jakości oprogramowania jest dla Ciebie ważniejsze. Jak będziesz zawalony użytkownikami i będziesz miał problemy z wydajnością konkretnie w tym module, to wtedy można pomyśleć o zmianie sposobu działania modułu.
Np. taką średnio trudną zmianą, którą być może chciałbyś wprowadzić (może nawet teraz -- dla ćwiczenia) byłoby dodanie większej ilości logiki po stronie klienta, dzięki czemu serwer nie musiałby generować całej tablicy (co może być kosztowne!) w odpowiedzi na każde żądanie ajaxowe. Można by zrobić to tak, że gdyby ktoś kliknął na "Usuń wpis" i usunął swój wpis, JavaScript słałby ajaxem żądanie, a serwer odpowiadał zwykłym statusem "usunięcie powiodło się/wystąpił błąd". Jeśli status byłby OK, JavaScript usuwałby elementy DOM z usuniętym wpisem z drzewa dokumentu. Z drugiej strony, gdy ktoś dodawałby wpis, serwer odpowiadałby tylko HTML-em nowo dodanego wpisu i JavaScript wstawiałby go w jedno miejsce.
Nie wiem dokładnie jak działa tablica facebookowa, nie korzystam z tego portalu: jeśli tablica zawiera też wpisy innych osób i chcemy je aktualizować również po dodaniu czy usunięciu naszego wpisu, to sprawa się komplikuje i opisaną wyżej optymalizację ciężej zastosować.