¿Cuál es el punto de que AVPlayer y AVPlayerItem sean clases separadas?

Hasta donde recuerdo.

AVPlayer es una abstracción de lo que está jugando.
Mientras, AVPlayerItem es una abstracción del elemento multimedia que se está reproduciendo.

En el mundo real, uno es un reproductor de DVD, el otro es el disco.

Diseñar para OO presenta estos desafíos. ¿Cómo dividimos el problema en clases y objetos individuales? Podemos meternos en problemas haciendo un modelo que sea demasiado literal.

Pero supongo que la abstracción aquí es razonable.

Esperaría que la funcionalidad “botón de reproducción, búsqueda y volumen” estuviera en el reproductor. Espero que las propiedades de los medios sean parte del artículo.

Pero tienes razón, podría definirse de manera diferente.
Quizás la principal ventaja es que en esta configuración, podemos definir un jugador persistente y hacer que el mismo jugador juegue más de un elemento.