From EXT_direct_state_access (For TextureImageEXT etc.):
If the texture parameter is for an unused name, the name becomes used and the named texture object is set to a new state vector, comprising all the state values listed in...
So, even if the given texture handle(or name), is not generated by GenTextures function it is recognized as a texture!? Or, may be I am getting confused.

If the texture parameter is for a used name and that named texture object has a different target than the specified target parameter, the INVALID_OPERATION error is generated
If given handle's referred texture will not be updated according to the given target, why would I be forced to remember the target of the texture all the time? I mean instead of a single uint, I need to hold on to an integer target property too.

Oh, answer is a bit lines above:
If the texture parameter is zero, then the target parameter selects the default texture of the specified target to update
Hmm, so target is useful if I select zero handle. Ok, good for proxy textures. But using target as proxy texture but using handle other than zero also generates an error too.

Well, I'd go for two different sets of commands where, one set taking only handle for my textures and other set for default texture with only target parameter. Then what would be the target of my textures?
myTextureHandle = glCreateTexture(target, internalFormat, size, ...);
Just a create object scheme not so different from shader creation, plus getting texture_storage player into the game. nothing else.