File.CreateFile, through StreamWriter, ends up calling the FileStream constructor passing FileMode.Create, FileAccess.Write and FileShare.Read. That's a very normal way to create, access and share files. You certainly would want write access since you just created the file. And it is sorta okay for other processes to read the file while you are writing it, nothing really bad happens when they do.
What you are asking for is possible, but you can't use File.CreateFile(). You'll have to first create a FileStream (Create, Write and FileShared.ReadWrite), and pass that to the StreamWriter constructor. Now the file can be written both by you and another process.
Which is rather tricky, suppose you and some other process both write to the file at the same time. That's first-come, first serve, the file will end up containing your program output, randomly mixed with the other process' output. It isn't very likely that the file will be readable after that happened.
Maybe you want to do something like intentionally not writing to the file yourself so this doesn't happen. It is very unusual, but it could be made to work. The bigger problem then would be for that other process to detect that the file is even there. Everything would probably work better if you just leave it up to the other process to create the file.