Um grande obrigado a @LordNeckbeard. Eu estava esquecendo que os arquivos "mpg" não são contêineres como "mp4". Bom resumo aqui .
Então, a parte 1 estava definindo o tipo de arquivo de saída como ".mp4". Isso pelo menos parou as falhas e erros, mas ainda estava recebendo vídeo preto em players do Windows. Parte 2 estava definindo o formato de pixel para yuv420p. De aqui :
Encoding for dumb players
You may need to use -vf format=yuv420p (or the alias -pix_fmt yuv420p) for your output to work in QuickTime and most other players. These players only supports the YUV planar color space with 4:2:0 chroma subsampling for H.264 video.
Aqui está o comando ffmpeg que funciona, tenho certeza que precisa de mais otimização:
ffmpeg -rtbufsize 1500M -f gdigrab -framerate 29.97 -draw_mouse 0 -offset_x 2633 -offset_y 103 -video_size 1280x720 -i desktop -pix_fmt yuv420p -c:v libx264 -preset ultrafast D:/myvideo.mp4