Sadly you didn't accept my answer in part I, as you just need to move an \else :-)
\documentclass{article}
\usepackage{natbib}
\begin{document}
\def\grpA{key1,key2,key3}
\def\grpB{key2,key3,key4,key5}
\def\merge#1{\mergexx#1,\relax,}
\def\mergexx{\expandafter\mergex}
\def\mergex#1,{%
\ifx\relax#1\else
\ifcsname @??#1\endcsname\else
#1,\expandafter\ifx\csname @??#1\endcsname\relax\fi
\fi
\expandafter\mergexx
\fi}
\def\ijoin#1{\ijoinxx#1,\relax,}
\def\ijoinxx{\expandafter\ijoinx}
\def\ijoinx#1,{%
\ifx\relax#1\else
\ifcsname @??#1\endcsname#1,\else
\expandafter\ifx\csname @??#1\endcsname\relax\fi
\fi
\expandafter\ijoinxx
\fi}
\let\oldcitep\citep
\protected\def\citep#1{{\xdef\tmp{\noexpand\oldcitep{\merge{#1}}}}\tmp}
\protected\def\citepj#1{{\xdef\tmp{\noexpand\oldcitep{\ijoin{#1}}}}\tmp}
The first set\citep{\grpA} and the second set\citep{\grpB} discuss XYZ.
In total\citep{\grpA,\grpB}, the bla bla bla is in common.
Group A\citep{\grpA} discusses X, whilst set B\citep{\grpB} discusses Y.
The common discussion points\citepj{\grpA,\grpB} are bla bla bla...
\end{document}
Produces
\citation{key1,key2,key3,}
\citation{key2,key3,key4,key5,}
\citation{key1,key2,key3,key4,key5,}
\citation{key1,key2,key3,}
\citation{key2,key3,key4,key5,}
\citation{key2,key3,}
with the last line showing the join/union of the two groups.