Скорее всего дело в логике. В системе существуют три типа событий (их больше, но нас интересуют три). Down/Up/Click.
Так уж сложилось, что правильным считается реакция именно на Click. Реакция на Down тоже существует, но нажав и держа кнопку A например, тебе может вылезти вот такое окошко
Т.е. трактовать нажатие кнопки как down не всегда правильно, поэтому принято использовать именно Click, т.е. нажатие и отпускание.
Далее в дело вступает цикл обработки сообщений. Система отслеживая курсор, вычисляет контрол, который находится под ним. Поэтому, когда ты отпускаешь мышь не над тем объектом, который получил Down, то событие клик не происходит, т.к. Down и Up произошли над разными объектами, и с логической точки зрения невозможно определить, кто должен получить Click, поэтому его не получает никто.
И да, скорее всего ощущения пользователя от срабатывания кнопки при событии Down, упомянутое @buster тоже учитывалось. User Experience, итить его за ногу