The simplest possibility would be to add a node that is filled white on the corresponding entry. Works, but only if the page background is white (which it is not already in your screen shots). So we need to avoid drawing the line in certain stretches. There are several possibilities, out of which I focus on clips and intersections.
You can use an even odd clip. So we first find the boundary path of the entry via fit, and then perform an even odd clip with that path and some large rectangle. The size of the blocked out region depends on the inner sep of the fit node. Everything outside the fit circle and inside the big box will be visible.
\documentclass{article}
\usepackage{tikz}
\usepackage{nicematrix}
\usetikzlibrary{fit}
\tikzset{% https://tex.stackexchange.com/a/76216
even odd clip/.code={\pgfseteorule}}
\makeatletter
\tikzset{% https://tex.stackexchange.com/a/38995
reuse path/.code={\pgfsyssoftpath@setcurrentpath{#1}}
}
\makeatother
\begin{document}
$\begin{NiceArray}{|CCC|CC}
a & b & c & a & b \
r & s & t & r & s \
x & y & z & x & y
%
\CodeAfter
\begin{tikzpicture}
\node[inner sep=0.5pt,circle,fit=(1-1),save path=\pathA]{};
\clip[even odd clip,reuse path=\pathA] ([xshift=-1cm,yshift=1cm]1-1)
rectangle ([xshift=1cm,yshift=-1cm]3-3);
\draw[semithick,blue,-latex,shorten <=-0.8em,shorten >=-0.8em]
(1-1.center) -- (3-3.center);
\end{tikzpicture}
\end{NiceArray}$
\end{document}

One can thus spare out all the entries, if needed.
\documentclass{article}
\usepackage{tikz}
\usepackage{nicematrix}
\usetikzlibrary{arrows.meta,fit}
\tikzset{% https://tex.stackexchange.com/a/76216
even odd clip/.code={\pgfseteorule}}
\makeatletter
\tikzset{% https://tex.stackexchange.com/a/38995
reuse path/.code={\pgfsyssoftpath@setcurrentpath{#1}}
}
\makeatother
\begin{document}
$\begin{NiceArray}{|CCC|CC}
a & b & c & a & b \
r & s & t & r & s \
x & y & z & x & y
%
\CodeAfter
\begin{tikzpicture}
\node[inner sep=0.5pt,circle,fit=(1-1),save path=\pathA]{};
\node[inner sep=0.5pt,circle,fit=(2-2),save path=\pathB]{};
\node[inner sep=0.5pt,circle,fit=(3-3),save path=\pathC]{};
\clip[even odd clip,reuse path=\pathA] ([xshift=-1cm,yshift=1cm]1-1)
rectangle ([xshift=1cm,yshift=-1cm]3-3);
\clip[even odd clip,reuse path=\pathB] ([xshift=-1cm,yshift=1cm]1-1)
rectangle ([xshift=1cm,yshift=-1cm]3-3);
\clip[even odd clip,reuse path=\pathC] ([xshift=-1cm,yshift=1cm]1-1)
rectangle ([xshift=1cm,yshift=-1cm]3-3);
\draw[semithick,blue,-{Latex[round,length=3.5pt]},shorten <=-0.8em,shorten >=-0.8em]
(1-1.center) -- (3-3.center);
\end{tikzpicture}
\end{NiceArray}$
\end{document}

Alternatively, intersections can be used.1
\documentclass{article}
\usepackage{tikz}
\usepackage{nicematrix}
\usetikzlibrary{fit,intersections}
\begin{document}
$\begin{NiceArray}{|CCC|CC}
a & b & c & a & b \
r & s & t & r & s \
x & y & z & x & y
%
\CodeAfter
\begin{tikzpicture}
\node[inner sep=0.5pt,circle,fit=(1-1),draw,opacity=0,name path=circ1]{};
\path (1-1.center) -- (3-3.center)
coordinate[pos=-0.2] (start) coordinate[pos=1.2] (end);
\path[name path=line] (start) to[bend left=0] (end);
\draw[semithick,blue,-latex,name intersections={of=line and circ1,total=\t}]
(start) -- \ifnum\t=2 (intersection-1) (intersection-2) --\fi
(end);
\end{tikzpicture}
\end{NiceArray}$
\end{document}

If you want to spare out several entries, you can use use loops.
\documentclass{article}
\usepackage{tikz}
\usepackage{nicematrix}
\usetikzlibrary{arrows.meta,fit,intersections}
\begin{document}
$\begin{NiceArray}{|CCC|CC}
a & b & c & a & b \
r & s & t & r & s \
x & y & z & x & y
%
\CodeAfter
\begin{tikzpicture}
\foreach \X in {1,2,3}{
\node[inner sep=0.5pt,circle,fit=(\X-\X),draw,opacity=0,
name path global=circ\X]{};
}
\path (1-1.center) -- (3-3.center)
coordinate[pos=-0.2] (start) coordinate[pos=1.2] (end);
\path[name path=line] (start) to[bend left=0] (end);
\draw[semithick,blue,-{Latex[round,length=3.5pt]},
name intersections={of=line and circ1,name=i1,total=\tA},
name intersections={of=line and circ2,name=i2,total=\tB},
name intersections={of=line and circ3,name=i3,total=\tC},
]
(start) -- \ifnum\tA=2
(i1-1) (i1-2) --\fi
\ifnum\tB=2
(i2-1) (i2-2) --\fi
\ifnum\tC=2
(i3-1) (i3-2) --\fi
(end);
\end{tikzpicture}
\end{NiceArray}$
\end{document}

1If you think that I am crazy because I draw a straight line with bend=0: the reason is that otherwise it is harder to sort the intersections: https://tex.stackexchange.com/a/418650.
\node[inner sep=0.5pt,circle,fit=(2-2),draw,opacity=0,name path=circ2]{};and\node[inner sep=0.5pt,circle,fit=(3-3),draw,opacity=0,name path=circ3]{};. – projetmbc Jun 15 '20 at 10:05\ifnum\t=2... \fitype statements to fix this problem. – Jun 15 '20 at 10:17nicematrixone must writecinstead ofCin the preambles of the{NiceArray}(but there is an option for backward compatibility). – F. Pantigny Jul 18 '20 at 21:19