Sólo hay que mirar en la ayuda del MSDN
KeyPress (Evento) Ocurre cuando el usuario presiona y suelta una tecla ANSI.
KeyDown, KeyUp (Eventos) Ocurren cuando el usuario presiona (KeyDown) o suelta (KeyUp) una tecla mientas un objeto tiene el enfoque. (Para interpretar los caracteres ANSI, utilice el evento KeyPress.)
Utilice los procedimientos de evento KeyDown y KeyUp para controlar cualquier pulsación de tecla no reconocida por KeyPress, como las teclas de función, las teclas de edición, las teclas de desplazamiento y cualquier combinación de éstas con modificadores del teclado. A diferencia de los eventos KeyDown y KeyUp, KeyPress no indica el estado físico del teclado; en su lugar, pasa un carácter.
KeyPress interpreta las mayúsculas y minúsculas de cada carácter como códigos de tecla distintos y, por tanto, como caracteres diferentes. KeyDown y KeyUp interpretan el estado de mayúsculas o minúsculas de cada carácter mediante dos argumentos: códigoTecla, que indica la tecla física (devuelve A y a como la misma tecla) y mayús, que indica el estado de la combinación mayús-tecla y, por tanto, devuelve A o a.
Lo dice bill gates, así que no hay mas discusión.