В моем случае вся клиентская область панели была занята пользовательскими элементами управления (не виден ни один пиксель внутренней области, кроме полос прокрутки).
В этом случае панель не получает события мыши и никогда не фокусируется (соответственно, нажатие на полосу прокрутки не считается «находящимся внутри панели»).
Мне пришлось добавить следующие строки в конструктор моего производного класса UserControl:
MouseEnter += delegate {
Parent?.Focus();
};
Теперь все работает нормально, поскольку у меня нет прокручиваемого содержимого в пользовательских элементах управления.