From what I see, in tvmc.compiler, export_library() is called with a mod.so input.
I agree we could generate directly the tar file, but I think this was done to avoid storing the .c files (@leandron will know more than me on this).
As for storing directly in the dylib, I am not sure we can exploit this feature in a bare-metal flow. What I am after is the static object file (.o) to statically link with a main.c and the C-runtime (which will be subsequently executed on a bare-metal target)