Ich bin da voll bei Dir. JSON dient zum Datentransport. Also sollte die Schnittstelle und damit die Datenstruktur möglichst genau definiert sein. Und ein Programm, welches sich nicht daran hält, ist einfach mal fehlerhaft.
Ebenso könntest du auch auf die Idee kommen, wenn nur ein Datensatz in der Menge ist, dass man da auch das äußere Array weglassen könnte. Sowas macht die Angelegenheit nur unnötig komplex, sowohl beim Auswerten als auch beim Formulieren der Schnittstellenbeschreibung.
"Formulieren der Schnittstellenbeschreibung" - Das ist ein Ansatz. Schon in dieser Formulierung sollte man wohl etwas wie eine Versionsnummer aufnehmen, die bei der Anforderung und in der Antwort hinterlegt wird. Mit einer solchen Idee kann man dann auch zukünftige Anforderungen bedienen ohne dass alle Clients und der Server gleichzeitig ein Update oder Upgrade erhalten. Freilich kann man das auch über die URL regeln aber wenn wir weiter denken als bis zum Browser, womöglich sogar an eine lokale Speicherung der Daten beim Empfänger, dann wäre es wohl in manchen Fällen nützlich, die Version der Schnittstellendefinition, mit der die Daten geliefert wurden, zur Hand zu haben.
Vorliegend käme also in Betracht bei einer Schnittstellen-Version "0815" hinsichtlich der Eigenschaft "telephone" einen String, bei "0816" einen Array zu erwarten.