No sé si es un bug o simplemente un mal diseño. Fíjate que al desplegar el calendario, si das click sobre el día que ya está seleccionado, el evento OnChange sólo se ejecuta una vez pero si das click sobre otro día es cuando se ejecuta dos veces. Es decir, se genera una vez al cambiar de día en el cuadro desplegado y otra vez al dar click.
Lo único que se me ocurre ahora es que lleves tú mismo el control de cambios:
Código Delphi
[-]
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
if DateTimePicker1.DateTime <> LastDate then
begin
LastDate := DateTimePicker1.DateTime;
end;
end;
donde LastDate es una variable de tipo TDateTime.
// Saludos