This is the data I could gather from a quick glimpse at the SDL's source code.
Firstly, the renderer stores the driver data, and the maximum texture size depends on the driver/GPU, so firstly in
SDL_CreateTexture the code makes sure that the wanted texture isn't too big.
Then the code splits into platform/rendering API specific code. As Alexandre Vaillancourt said in the comments, the renderer stores the OpenGL context data that is required for creating the texture.
I'm also pretty sure that you can also force
SDL_Renderer to use a specific rendering API at least in some hacky way, and rendering textures that are created on a DirectX renderer sure won't work with an OpenGL-based renderer.
Lastly, as mentioned here, the renderer also manages its textures lifetime.