If you have DYNAMIC buffer and map it with WRITE_DISCARD then both ways are pretty much identical.
As soon as you issue map call, DirectX will provide you with brand new buffer, so there will be no CPU-GPU sync, that is the point. You cannot read data in this provided buffer, first because it is a completely new memory and does not contain your data, second - because returned memory is a writecombine memory and reading from it will cause big penalty.
While in your case this will not be a problem, but mapping buffer with discard causes runtime to search available piece of memory, which sometimes may lead to hitches. More robust way would be to have several buffers (or just one bigger buffer) and map it with MAP_NO_OVERWRITE (only available for index/vertex buffers unless you are running Direct3D 11.1 on Win8), but you need to ensure that memory to which you are writing is not anymore used by GPU. One way to ensure it is to have as many buffers as you maximum frame latency, or issue queries and check that they are ready.
You can read more about it here
Hope this helps.