Mi sembra che ti sei già risposto da solo.

Puoi creare una tabella apposta, calcolando che non tutti gli utenti sottoscriveranno tutti gli argomenti, ma comunque sapendo che alla fine verrà ad avere parecchi record.

Oppure puoi abbinare a ciascun utente un array che indichi gli argomenti cui è iscritto.
Puoi farlo con il sistema che hai proposto oppure aggiungendo un campo di testo ai record degli utenti.

Memorizzare questi dati in file abbinati agli utenti ha alcuni vantaggi ed altri svantaggi rispetto all'uso del rdb: dipende da molti fattori.
Personalmente credo che una oculata gestione di file locali possa raggiungere performances migliori degli accessi al db, ma è solo un'opinione...