Let's have a stiffness tensor $$a^{ijkl}: a^{ijkl} = a^{jikl} = a^{klij} = a^{ijlk}.$$

It has a 21 independent components for anisotropic body.

How does body symmetry (cubic, hexagonal etc.) changes the number of independent components of the tensor? For example, for absolutely isotropic body tensor has 2 independent components, and for hexagonal symmetry $C_{6}$ (with an z-axis symmetry) it has five components. How to explain it?

-

The components can only be independent of direction if they can be written as a function of the tensor $\delta_{ij}$ (this needs some thinking, of course). Now, because there are only two possible expressions involving $\delta_{ij}$ and $\delta_{kl}$ with the necessary symmetries, namely $\delta_{ij} \delta_{kl}$ and $\delta_{ik} \delta_{jl} + \delta_{il} \delta_{jk}$, each $a_{ijkl}$ must be a linear combination of these, i.e.
$$a_{ijkl} = a(\delta_{ij} \delta_{kl}) + b(\delta_{ik} \delta_{jl} + \delta_{il} \delta_{jk})$$