You habe two things you want to solve here:
The arrows should have the same length. (Only the horizontal ones?)
The easiest solution to this is to make all the nodes in each column have the same width.
And the right-hand side of one of your cells should not be part of this same width.
In this simple case, this is easiest achieved with a third column that has no column separation to its predecessor.
For 2. I'm using the key no csep
which takes a list of columns that shouldn't have a column separation to their successors. Here, you just want no csep = 2
.
For 1. you can use set widest math
that is a list of the widest content of each column, here: set widest math={\partial_a \Psi, (\partial_a\Psi)'}
.
For other solutions for 2. take a look at another answer of mine where I'll explore some ideas. If handling an extra column is not to your liking that answer's solution 2. and 3. are more appropriate then.
For other solution for 1. you can directly have TikZ measure each node and apply the needed minimum width
for it on the next run.
If you don't actually want the column centered, you can actually just use Case 1 of this answer.
In the code below, I've commented an arrow that connects the north anchors of the second row's nodes to show that even the vertical arrows are not the same length.
Code
\documentclass{report}
\usepackage{mathtools, tikz-cd}
\tikzcdset{
no csep/.style={/utils/temp/.style={/tikz/column ##1/.append style={
column sep=-2*(\pgfkeysvalueof{/pgf/inner xsep})}},/utils/temp/.list={#1}},
set widest math/.style={
/utils/exec=\def\pgfmathcounter{0},
/utils/temp/.code=\edef\pgfmathcounter{\pgfinteval{\pgfmathcounter+1}}%
\pgfkeysalso{/tikz/column \pgfmathcounter/.append style={
align=center, text width={width("$##1$")}}},
/utils/temp/.list={#1}}}
\usepackage[showframe, pass]{geometry}
\begin{document}
\[
\begin{tikzcd}[set widest math={\partial_a \Psi, (\partial_a\Psi)'}, no csep=2]
\Psi \arrow[d, "\partial_a"] \arrow[r, "U"]
& \Psi' \arrow[d] \\
\partial_a \Psi \arrow[r, "U"]
& (\partial_a\Psi)'
& {} = U(\partial_a\Psi)
% \ar[help lines, start anchor=north, end anchor=north, l]
\end{tikzcd}
\]
\end{document}
Output

anchor = base east
for the left column andanchor = base west
for the right column and then using arrows that are strightly going down. See Case 1 in my answer to a similar question./tikz/column 1/.append style={align=center, text width=width("$\partial_a \Psi$")}
andwidth("$(\partial_a\Psi)'$")
for the second column while\mathrlap
ing{} = U(\partial_a\Psi)
. By the way, the vertical arrows have different lengths, too, it's just not as noticable.