In Short: The compiler will optimize a call to two pointers on the stack and replace it by false, because it knows they point to different variables on the stack.
The compiler will usually put variables on the stack if it is sure they do not escape the current function and are not addressed (0x57…). As soon as it is necessary or deemed beneficial for performance, the compiler may put values on the heap instead (0xc000…).
In your first example you pass the addresses of your variables to another function (fmt.Println) so the compiler has to make sure they are addressable even outside of the current function - so both variables are put on the heap (usually indicated by a small memory address like 0x57…)
In your second example you don’t pass the addresses of the values outside of the function, so the compiler decides the values can stay on the stack. In this case the compiler can also do some optimizations of your code - e.g. replace the check of two pointers with a static true/false.
You can work around this optimization (and around the escape of variables to the heap) by casting the pointers to integers: