Io ho appena fatto una cosa simile utilizzando Laravel come framework.
Nel mio caso ho mantenuto un singolo database perchè il numero dei sottodomini è variabile (shop dei singoli utenti nei vari sottodomini), quindi non volevo dover creare e cancellare nuovi database ogni volta che un utente si registra/cancella. Inoltre non vedevo un motivo pratico per crearne più di uno.
Per quanto riguarda il lato routing, nel tuo router dovrai prendere dalla richiesta il sottodominio di provenienza e tramite quello direzionare il flusso dell'applicazione. Inoltre anche lato server dovrai gestire correttamente le varie connessioni. Io per esempio ho fatto in modo che il mio nginx reindirizzasse tutto il traffico verso un solo file (traffico di tutti i sottodomini) e da lui poi gestisco tutto tramite il router php.
Ora su due piedi queste sono le cose più rilevanti che mi sono venute in mente, ma se hai dei dubbi su qualcosa di specifico chiedi pure.