There are a number of possible questions/answers.
First it says 0 bytes leaked so that is ok.
If the question is the True heap difference => I vaguely recall having read that this is memory that gets allocated by the system unit before heaptrc is fully initialized. Therefore it does not get properly accounted...
If that is so, then the presence and/or size of that gap may vary for different targets, as the system unit includes target specific code...
If the question is: why do I get a popup on windows, but not on Linux... Linux always has StdOut (even if it goes to /dev/nil)
Heaptrc itself prints to stdout (or stderr, but I think stdout). That fails (runtime error on closed handle) on Windows for GUI apps. So the LCL (or LazUtils, something...) redirects this into a popup.
Heaptrc iirc always prints a message. Either that there is a leak, or that there is not. So on Windows you do get that popup (unless you redirect heaptrc to a file, or silence it otherwise). On Linux it just prints to stdout, never mind where that goes.