Ja byłbym za 1 tabelą zbiorczą. Nie założysz na takiej tabeli więzów integralności, ale za to "podpięcie" komentarzy do kolejnego elementu (produkty w sklepie, filmiki, konta użytkowników - cokolwiek) zrobisz pstryknięciem palca. Co do uwag Crozina:
Cytat(Crozin @ 11.12.2011, 19:21:07 )

1. Każdy rodzaj komentarza ma odwołanie (klucz obcy) do innej, specyficznej dla swojego typu tabeli.
Fakt, ale można zapisać object_id (ID rekordu, którego tyczy komentarz) oraz object_type (np. 1 newsy, 2 zdjęcia itd).
Cytat(Crozin @ 11.12.2011, 19:21:07 )

2. Nawet jeżeli początkowo wszystkie komentarze są dokładnie taką samą strukturą (z pominięciem klucza obcego z pkt. #1) nie oznacza to, że w przyszłości będą.
Teoretyzowanie

Cytat(Crozin @ 11.12.2011, 19:21:07 )

3. Nawet w ramach jednakowej struktury mogą istnieć inne "parametry" co do samych danych dla różnych komentarzy.
Nie ma co w tym przypadku aż tak wybiegać w przyszłość. Komentarze to komentarze - treść. W przypadku konieczności dodania dodatkowych parametrów można wówczas utworzyć tabelę uzupełniającą parametry dla konkretnego typu komentarzy. Jednak jakie jest prawdopodobieństwo, że komentarze będzie trzeba rozbudować o jakieś parametry? Wg mnie małe.
Moim zdaniem 1 tabela ma sporo plusów:
- komentarze masz w 1 miejscu (rozbudowa ich o dodatkową kolumnę to modyfikacja 1 tabeli),
- dodanie komentarzy do kolejnego elementu systemu jest dziecinnie proste,
- prędkość wyszukiwania komentarzy dla konkretnego elementu (object_id + object_type) jest bardzo zbliżona do zwykłego (object_id).
Ostatnio zastosowałem podobne podejście w jednym z portali. Dotyczyło jednak tagów. Nie robiłem tabel photo_tags, article_tags itd. tylko 1 object_tags. Dodanie tagowania np. profilu użytkownika to dosłownie chwila pracy. Podejście to sprawdza się znakomicie. Trzeba tylko pamiętać, że przy usuwaniu danego rekordu należy ręcznie usunąć powiązane z nim tagi (brak klucza obcego ON DELETE CASCADE).