I added \show\mylist to your code. (Just before the statement saying how many items there are.) This shows the following on my terminal:
> \mylist=macro:
->\delim A,1|\delim B,2|\delim C,3|\delim D,4|
You can see that there are, indeed, 5 items in this list. There are 4 commas and 5 items because each \addRow adds <content before>,<content after>. So after you add the first item, the list contains 2, after you add the second, 3, and so on.
You are also using something of a hodgepodge of expl3, LaTeX 2e and TeX. While it's difficult (impossible?) to work entirely in expl3 right now, this could be somewhat cleaner.
For the counting, as I see it you have at least two choices. You could just deduct 1 since your code adds n+1 items by design. Alternatively, you could keep a separate count. Or you could restructure things. Which is most sensible likely depends on further features of your context.
In the following I take the restructuring route. I store the two arguments given to \addRow in two sequences and then simply feed them into a function two-by-two to create the rows. Then the count of either sequence gives the number of rows. We can feed this directly to \mutlirow by using a expl3 function variant so that the counting gets done before the function sees it.
Since tables with vertical rules and little spacing are generally considered sub-optimal, I've also thrown in a booktabs version. This version doesn't use H because H is not a great idea. Non-floating floats are best avoided. Instead, I use center to give some spacing and \captionof from the caption package, since the need for a caption often motivates people's desire for non-floating floats.

\documentclass{article}
\usepackage{float}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{caption}
% not needed with recent LaTeX kernels
% uncomment one or both if you have an older install
% \usepackage{expl3}
% \usepackage{xparse}
\ExplSyntaxOn
% use two sequences and forget storing commas
\seq_new:N \l_francoisfem_itemsa_seq
\seq_new:N \l_francoisfem_itemsb_seq
\NewDocumentCommand \countItems {m}
{
\seq_count:c { l_francoisfem_#1_seq }
}
\NewDocumentCommand {\addRow} {mm}{ % just store the arguments pairwise
\seq_put_right:Nn \l_francoisfem_itemsa_seq { #1 }
\seq_put_right:Nn \l_francoisfem_itemsb_seq { #2 }
}
\cs_new_protected_nopar:Nn \francoisfem_make_row:nn
{ % we add the alignment and row endings etc. here
& #1 & #2 \ \cline{2-3}
}
\cs_new_protected_nopar:Nn \francoisfem_makenicer_row:nn
{ % for booktabs version
& #1 & #2 \
}
\cs_new_protected_nopar:Nn \francoisfem_multirow:nnn
{ % make expansion easy for multirow
\multirow {#1} {#2} {#3}
}
% generate a version of multirow which expands its first argument once, so we get the result of the count
\cs_generate_variant:Nn \francoisfem_multirow:nnn { onn }
\NewDocumentCommand{\makeTable}{ O {} D () { some ~ item } }
{ % two optional arguments: square brackets (defaults to ); parentheses (defaults to 'some item'')
\begin{table}[H] % note that H is Really Not A Good Idea
\centering
\caption{Usually ~ why ~ people ~ want ~ non-floating ~ floats}
\begin{tabular}{|c|c|c|} % note that vertical rules and standard spacing don't make for professional-looking results (see e.g. booktabs)
\hline
Uppercase & Number & Lowercase \ \hline
\francoisfem_multirow:onn % the o means the first argument gets expanded before multirow sees it
{
\seq_count:N \l_francoisfem_itemsa_seq
}{#1}{#2}
% Noah's ark : we feed the contents of the sequences in two-by-two to our row-maker function
\seq_map_pairwise_function:NNN \l_francoisfem_itemsa_seq \l_francoisfem_itemsb_seq \francoisfem_make_row:nn
\hline
\end{tabular}
\end{table}
}
\NewDocumentCommand \makenicerTable { O {*} D () { some ~ item } }
{ % booktabs version
\begin{center} % don't use a float if we don't want it to move
\captionof{table}{If ~ we ~ want ~ a ~ caption}
\begin{tabular}{ccc} % no vertical rules
\toprule
Uppercase & Number & Lowercase \ \midrule
\francoisfem_multirow:onn
{
\seq_count:N \l_francoisfem_itemsa_seq
}{#1}{#2}
\seq_map_pairwise_function:NNN \l_francoisfem_itemsa_seq \l_francoisfem_itemsb_seq \francoisfem_makenicer_row:nn
\bottomrule
\end{tabular}
\end{center}
}
\ExplSyntaxOff
\begin{document}
\addRow{A}{1}
\addRow{B}{2}
\addRow{C}{3}
\addRow{D}{4}
\makeTable
This list has \countItems {itemsa} elements.
\makenicerTable
\end{document}