Merging all data on CPU and uploading or using glBufferSubData on startup

If I have multiple meshes that I need to upload to a buffer on startup but the data for each mesh is separate, I can merge the data on CPU and upload to an immutable buffer with glBufferStorage. Or I can upload each mesh individually using glBufferSubData or glMapBufferRange (after initial allocation with glBufferData).

Merging all data takes a lot of CPU time. Are there still advantages to doing this because we can then make buffer immutable? How is an immutable buffer better to mutable one?