On درسته
چون anniversay همون طور که گفتید یک "روز" خاصه. برای روز هم On می بریم
at رو برای جشن ها و مناسبت های فصلی به کار می بریم:
at Christmas
at Easter
ولی در عین حال می تونید بگید:
on New Year's Day
on Christmas Day
باز هم می تونید بگید:
at their anniversary party
که به کار بردن at به خاطر کلمه ی party هستش
یا:
at the 20th anniversary
و
On the 20th anniversary
وقتی از at استفاده می کنید اشاره به یک رویداد می کنید (همون طور که خودتون اشاره کردید) مثلا ممکنه اون روز رو جشن بگیرید
وقتی از on استفاده می کنید صرفا دارید به اون روز اشاره می کنید. صرفا یک تاریخ.
ولی باز هم هروقت گیر کردین از on استفاده کنید. زیاد ندیدم at استفاده کنن.