Yes - I can confirm that individual JS code blocks share the same 1GB memory limit as the entire workflow. I'm not sure why there is a more strict limitation enforced for Python blocks.
In this case, I'm pretty sure you're not seeing the total network cost because the workflow failed to run to completion. Looking at the contents of your block, though, I'm even more mystified as to how you're hitting the memory limit. If it makes sense for your use case, I'd probably recommend using JS blocks for making manual API requests.
To your last point, there isn't a separate limit to the size of the payload returned by a given block. It would just need to respect any block-level limitations - 256MB for Python and 1024 MB for JS - and the 1GB memory ceiling for the entire workflow run. The other thing to keep in mind is that the body of individual resource requests are generally limited to ~100MB. I'm not 100% sure if this would apply to requests made from within a code block but I'm fairly sure it would.
It's worth noting that all the above limits can be adjusted or removed entirely if you are running a self-hosted instance!