What's that 37 bytes block? Is this TATTabData size?
Please notice, that if you change the dynamic string (Format(...)) to static - i.e.
data.TabCaption := 'Tab';
...there will be no leak reported.
It may be something to do with tracking that string reference not the TATabData as a whole....