What is preferred upsampling or zero padding?
It depends on application.
For upsampling, Keras documentation says:

Repeats the rows and columns of the data by size[0] and size[1]
respectively.

For zero padding, Keras documentation says:

This layer can add rows and columns of zeros at the top, bottom, left
and right side of an image tensor.

So, imagine You have picture of sharp edge shapes, and You want to build model that could learn to distinguish them. In that case, I would likely go with UpSampling, because You would have extra data, and Your shape structure wouldn't be ruined. While, with smooth curved edges, smoothness could be ruined. In that case, I would go with ZeroPadding, because it won't touch inner data, it will only add zeros side the borders.
This is my intuition about those two functions, don't take it for granted. The best option You could do is to test both on Your sample and see the output.