Mosu, I don't know if this may help you, but I can confirm that, at least under some circumstances, the code is there to write CodecPrivate for MPEG-1/2 was still working in mkvmerge v2.8.0.
I've got a mkv I did mux last month and it is working fine.
Code:
|+ Segment information
| + Timecode scale: 1000000
| + Muxing application: libebml v0.7.7 + libmatroska v0.8.1
| + Writing application: mkvmerge v2.8.0 ('The Tree') built on May 9 2009 18:02:06
| + Duration: 6492.200s (01:48:12.200)
| + Date: Wed May 20 19:22:13 2009 UTC
| + Segment UID: 0x99 0x19 0x4d 0xc7 0x0c 0x35 0x55 0xfb 0x9c 0xb0 0xc8 0x52 0x60 0x8c 0x2a 0x34
|+ Segment tracks
| + A track
| + Track number: 1
| + Track UID: 1
| + Track type: video
| + Enabled: 1
| + Default flag: 1
| + Forced flag: 0
| + Lacing flag: 0
| + MinCache: 1
| + Timecode scale: 1
| + Max BlockAddition ID: 0
| + Codec ID: V_MPEG2
| + Codec decode all: 1
| + CodecPrivate, length 152
| + Default duration: 40.000ms (25.000 fps for a video track)
| + Language: und
| + Video track
| + Pixel width: 720
| + Pixel height: 576
| + Interlaced: 0
| + Display width: 1024
| + Display height: 576