Simbus,
gli unit test puoi farli in qualsiasi linguaggio, non solo in PHP, non è quello il problema. E' la facilità della creazione di un sistema di testing automatizzato a differire profondamente.
Se hai un modulo totalmente indipendente puoi facilmente mettere in piedi un programma che lo testi secondo una procedura standard.
Oltretutto, una volta creato il driver, ti è utile per omologare tutte le successive versioni del modulo in testing.
Pilotare una libreria con il debugger per fargli eseguire qualche centinaio di query differenti ed analizzarne in via automatizzata le risposte non è che non si possa fare, ma è decisamente più scomodo rispetto ad una banale connessione TCP/IP. Pensa anche al fatto dell'estrema semplicità di debugging remoto, utilissimo in caso di sviluppo in team. Semplicissimo in questo caso, pressochè non fattibile con l'uso di librerie.
Per l'uso diverso del database... chi ti dice che la versione 9.5 del Joomla utilizzerà le stesse tabelle e gli stessi campi della 1.6? In un sistema distribuito la cosa interesserebbe poco, perchè è sufficiente che il processo server esponga gli stessi metodi ed utilizzi lo stesso protocollo, ed i dettagli di implementazione non riguardano il resto del sistema.
Tu dirai: ma è la stessa cosa con le librerie. Beh, si e no. Si nel senso che non è infattibile, no nel senso che con le librerie hai necessariamente un tempo di sovrapposizione delle due tecnologie che rende di fatto non fattibile la cosa.
Però qui stiamo divagando sui dettagli, la vera importanza della distribuzione dei (grossi) sistemi è l'ottimizzazione delle risorse di calcolo risiede nei primi punti da me elencati, ossia solidità dell'architettura dovuta alla ridondanza e indipendenza dalle piattaforme su cui essa è ospitata (da intendersi sia come hardware che come linguaggi/sistemi operativi).
Tanto per farti un esempio, condurre un attacco DDOS veso un server è cosa relativamente semplice, lo sappiamo tutti; farlo veso una piattaforma distribuita è (virtualmente) impossibile. O almeno estremamente complesso.