Why do we need to concatenate in a U-Net? You might be familiar with the U-Net, a machine learning network deceived for image segmentation.
It's basically an encoder/decoder network with some direct links between encoder and decoder segments:

I would like to better understand the reason behind those gray lines!
What is the idea behind copying one part (cropped) of the outputs of the convolutional segments  (before max-pooling) and concatenating it to the inputs to the individual up-convolutional layer?
These types of connections between layers are called skip connections, searching for this will give you a way to find more in-depth information. Broadly speaking, there are two advantages to using skip connections in this case:

They allow gradients to more freely flow through the model, mitigating the issue of vanishing gradients
They allow features from the encoder side of the network to the decoder side of the network, adding extra information that might be lost because of the downsampling on the encoder side of the network.