This depends a lot on how the DOS is calculated. I don't know the options one has for this when using VASP or SIESTA, but I am aware of different approaches. The central problem is that you don't know which state at a certain k point is "connected" to some other state at another k point. When calculating a DOS you have to integrate over the Brillouin zone and therefore you have to somehow interpolate between the actually calculated k points. The eigenenergies of the states at the different k points may differ by more than what you might find reasonable for the energy-resolution of your DOS.
Two approaches:
You could say that each state contributes to the "energy bin" it is directly related to and smoothen the DOS afterwards to get rid of the artifacts due to this finite sampling. In this case you somehow have to define a parameter controlling the smoothening and this has to be related to the fineness of the sampling in the Brillouin zone. Unfortunately the relationship between the k-point sampling and the smoothing is also not direct: The band dispersion may be very different for different bands and for different materials.
You could assume a certain correspondence between the states at different k points and interpolate between the states in k space. This is the tetrahedron method. Unfortunately a naive approach may assume a wrong correspondence. For example if you just say that the i-th eigenvalue at some k point corresponds to the i-th eigenvalue at another k point, you ignore the possibility of band crossings. Your interpolation scheme would imply avoided crossings. To make this issue less severe you would also smoothen the DOS on the energy grid. And, of course, a finer k-point sampling would also reduce the significance of this issue.
In the end creating a nice DOS is a matter of different ingredients:
- The Brillouin zone integration scheme.
- The k-point sampling of the Brillouin zone.
- The fineness of the energy grid.
- The smoothing of the DOS.
- The dispersion of the bands.
A finer k-point sampling allows the generation of a higher-quality DOS. But you also have to control the other parameters.
I also described this landscape of different parameters in the documentation of the Fleur code. You can find there a few example plots demonstrating the effect of changing certain aspects of the DOS generation. Of course, the parametrization may be slightly different for other codes, but the general problem should be similar.