Io sto affrontando lo stesso problema.
Mi sono orientato per una struttura modulare e ad a plugin.
La pagina di default non fa altro che vedere quali sono i blocchi di destra, la pagina centrale e i blocchi di sinistra.
Quindi passa a visualizzarli.
Per ogni modulo ho predisposto una pagina apposita per il box ed una per la visualizzazione come pagina che è la stessa che viene visualizzata nel caso si debba accedere a quel box da un link.
Per le varie funzioni i box fanno uso di proprio script o per le operazioni più generali (validazione form, gestione categorie, creazione di anteprime di immagini, ecc) utilizzano dei plugin contenuti in un'apposita cartella.
Per il resto la pagina di default di ogni modulo si preoccupa di includere tutto ciò che le serve come se fosse la pagina di default del sito stesso.
Per gestire il tutto utilizzo un array costruito manualmente dove inserisco i box da visualizzare a destra ed a sinistra (si trova nella pagina principale del sito). Per la pagina centrale mi servo delle variabili passate via querystring e con appositi switch o con nomi generalizzati (per esempio include('modules/' . $moduleName . '/default.ph') ) includo la pagina necessaria.