Salut,
Dans un premier temps je dirais que ta relation est mal définie. En effet, les propriétés "pivot" sont seulement celles en sus. Donc ->withPivot( ['status_id', 'user_id', 'status_date'] ) devient ->withPivot( ['status_date'] ).
Ensuite, au niveau de ta requête et de ton scope, tu cherches à récupérer seulement les User qui ont au moins un Statut sur la date donnée.
En réalité tu ne filtre pas les résultats de la relation, mais il s'agit juste ici d'une condition. (Il faut que l'utilisateur ai au moins un statut sur la date donnée).
Ensuite, un BelongsToMany doit te retourner une collection (de Status dans ton cas) et non un seul objet. Tu ne devrais donc pas pouvoir faire
Par contre, ca oui :
Pour ta méthode sync(), il faut que ce soit un tableau, avec en clé, l'ID du statut concerné, et en valeur, les valeurs pivots.
Exemple :
J'ai écris un peu en même temps que je réfléchissais, j'espère avoir été clair et avoir pu te donner quelques pistes :)