I'm using Windows, Pointshop 1 with the latest from their git, the SVN version of ULX/ULib were downloaded less than an hour before the test, likewise with validating GMod itself via SteamCMD (but I made a mistake in earlier statements, more on that later).
Importantly, though, I have a way to replicate the issue.
function BreakPointshop()
return true
end
hook.Add("PlayerInitialSpawn", "breakpointshop", BreakPointshop)
In lua/autorun. When that is there, it breaks pointshop. When it's not there, pointshop works. When it's there and ULib is NOT there, Pointshop works.
The problem does not occur in a totally vanilla install of GMod, I'd accidently left some debug code that prints player information in lua/autorun. I only checked addons because I forgot about that code. Sorry for misrepresenting this as a bug that occurs in totally vanilla gmod.
But my point remains that hooks.lua does not actually have the same behavior as regular GMod. Returning true in a hook in regular gmod stops the gamemode's version of that hook from executing. Returning true under hooks.lua's regime, however, causes all subsequent hooks to not execute. This is not analogous to GMod's behavior as it stops other hooks from executing, rather than just stopping the default gamemode hook from executing.