Il punto è proprio che esistono oggetti che implementano un'interfaccia che permette di usarli esattamente come se fossero degli array, quindi con il foreach puoi iterarli esattamente nella stessa maniera.

Naturalmente questo non significa che non abbiano anche altre proprietà, o che non possano essere usati diversamente, ma questo è il modo più semplice e diretto di usarli.