Out of interest, I chased this down a bit using `git blame`. I think the code in its current form (more or less - some constants where introduced later and things where moved around a bit here and there) was introduced here:
It seems checks from multiple places where consolidated into one. One of these checks was `n.Type.Width > MaxStackVarSize` another was `!(n.Type.Type.Width < 1<<16`), which then got rewritten into `n.Type.Type.Width >= 1<<16` to avoid the negation, which eventually became the code you looked at.
Before that commit, it's not clear to me where this specific condition was taken from.
So, from what I can tell, it's an artifact of these two things being written by different people and then evolving over a long time into the same place via a sequence of semantics-preserving small refactorings. I don't think there is a technical reason they should be different but I also assume that it's not worth it to make them the same - it doesn't really matter if we move things to the heap one byte earlier or later, only the order of magnitude is important.
But I might be wrong about all of this. I don't really understand the purpose of you diving so deep into the escape analysis behavior and then asking *extremely* detailed questions like this (though I am always curious to see if you could find the answer yourself, which is why I dove into the git history). ISTM if this causes a problem, the best way to address it would be to file a bug. And if it's just curiosity, you can always try and change it and see what breaks. Go has a lot of tests.