Use
ffmpeg -ss 00:00:00 -t 00:00:15 -i video.mp4 -loop 1 -i image.png -i audio.mp3
-filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i];
[0][i]overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2:shortest=1[v]"
-map "[v]" -map 2:a -shortest incomplete.mp4
No ffmpeg, a colocação de opções é importante. Qualquer opção antes de uma entrada se aplica apenas a essa entrada. Em seu comando combinado tentado, você insere o áudio após as especificações de tempo para que elas se tornem específicas apenas para a entrada de áudio.
O FFmpeg usa um sistema de mapeamento para decidir quais fluxos incluir na saída. Quando nenhuma atribuição de mapa é definida explicitamente, o mapeamento padrão seleciona um áudio entre as entradas. Parece que alguns de seus MP4s tinham fluxos de áudio que foram priorizados sobre o MP3. Com atribuições explícitas, isso não acontecerá.