Answer
Add explicit BYMINUTE and BYSECOND values to the expression, not just BYHOUR — for example, FREQ=DAILY;BYHOUR=10,11;BYMINUTE=00;BYSECOND=00. Without pinning minutes and seconds explicitly, the schedule falls back to whatever minute/second the expression was saved at (drawn from sysdate), which is why it lands on an odd time like 10:28 instead of exactly on the hour; fully specifying BYHOUR, BYMINUTE, and BYSECOND together locks the schedule to the exact times intended.