The package nicematrix provides tools designed to solve that kind of problems.
The environment {NiceTabular} is similar to {tabular} (of array) but provides (when the key color-inside, alias colortbl-like is used) tools to color the cells, row and columns with a syntax similar to the syntax of colortbl. It does not use colortbl.
You have a good result in all the PDF viewers (you don't have rules which seem to vanish at some levels of zoom; you don't have the thin white lines you see for instance in the viewers using MuPDF such as SumatraPDF when the tabular is constructed with colortbl).
However, you need several compilations.
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\definecolor{Gray}{gray}{0.85}
\begin{document}
test a color table:
\begin{table}[h]
\begin{center}
\begin{NiceTabular}{|c|c|c|c|}[color-inside]
\hline
\rowcolor{Gray}Version & Date & Author & Reason of Change \\
\hline
0.1 & \today & Chen How & dummy content \\
\hline
& & & \\
\hline
& & & \\
\hline
\end{NiceTabular}
\end{center}
\caption{Document history}
\end{table}
\end{document}

In fact, with {NiceTabular}, it's possible to draw all the rules with only one key hvlines. It's also possible to give the instructions for the colors before the body of the array in the "\CodeBefore".
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\definecolor{Gray}{gray}{0.85}
\begin{document}
test a color table:
\begin{table}[h]
\begin{center}
\begin{NiceTabular}{cccc}[hvlines]
\CodeBefore
\rowcolor{Gray}{1}
\Body
Version & Date & Author & Reason of Change \\
0.1 & \today & Chen How & dummy content \\
& & & \\
& & & \\
\end{NiceTabular}
\end{center}
\caption{Document history}
\end{table}
\end{document}