The tcbitemize environment from tcolorbox could be used, annotations can easily be added using TikZ code and allows for separate boxing of each element more easily than a table-based solution, and entering each element is slightly easier than creating a full TikZ node each time.
The main limitation of this approach (which may be down to my ignorance) is the lack of flexibility in specifying different column widths in a tcbraster. While one can use raster force size=false and add to width to each box as appropriate, this seems to be incompatible with raster multicolumn.
The basic alignment can be set up as
\documentclass{article}
\usepackage[most]{tcolorbox}
\begin{document}
\begin{tcbitemize}[raster width=15cm,raster columns=5,
raster equal height=rows,
enhanced,sharp corners,colback=white,colframe=black,
top=0mm,bottom=0mm,
halign=center,valign=center,halign upper=center,halign lower=center,
raster left skip=0mm,raster right skip=0mm,
raster column skip=0.5mm,
raster column 1/.style={blanker,halign=left},
]
\tcbitem Plain ISD:
\tcbitem[raster multicolumn=2] $0$
\tcbitem[raster multicolumn=2] $t$
\tcbitem Lee-Brickell:
\tcbitem[raster multicolumn=2] $p$
\tcbitem[raster multicolumn=2] $t-p$
\tcbitem Leon:
\tcbitem[raster multicolumn=2] $p$
\tcbitem $0$
\tcbitem $t-p$
\tcbitem Stern:
\tcbitem $p$
\tcbitem $p$
\tcbitem $0$
\tcbitem $t-2p$
\end{tcbitemize}
\end{document}
where the raster multicolumn key creates boxes spanning over multiple columns. Box style settings can be set in the tcbitemize options, raster column 1/.style={blanker,halign=left} applies a distinct style to each column 1 box, rather than having to apply a different style to each box individually.
The annotations can be input using blank boxes with TikZ code inside them, using the nodes defined on each corner, through the at end tikz key to individual \tcbitems, raster row 1/.style={blanker} is used as with raster row column 1/.style= above to set the entire row of arrows to be blank boxes. Finally, as long as the dashed lines just divide a single box, this can be done with \tcbitem[sidebyside] and using \tcblower to divide the left and right content, the separator can then be customised.
\documentclass{article}
\usepackage[most]{tcolorbox}
\begin{document}
\begin{tcbitemize}[raster width=15cm,raster columns=5,
raster equal height=rows,
enhanced,sharp corners,colback=white,colframe=black,
top=0mm,bottom=0mm,
halign=center,valign=center,halign upper=center,halign lower=center,
raster left skip=0mm,raster right skip=0mm,
raster column skip=0.5mm,
raster column 1/.style={blanker,halign=left},
raster row 1/.style={blanker},
raster row 4/.style={blanker}
]
\tcbitem
\tcbitem [raster multicolumn=2,at end tikz={\draw [<->] (frame.south east) -- (frame.south west) node[midway,above] {$k$};}]
\tcbitem [raster multicolumn=2,at end tikz={\draw [<->] (frame.south east) -- (frame.south west) node[midway,above] {$n-k$};}]
\tcbitem Plain ISD:
\tcbitem[raster multicolumn=2] $0$
\tcbitem[raster multicolumn=2] $t$
\tcbitem Lee-Brickell:
\tcbitem[raster multicolumn=2] $p$
\tcbitem[raster multicolumn=2] $t-p$
\tcbitem \rule{0mm}{5mm}
\tcbitem [raster multicolumn=2]
\tcbitem [at end tikz={\draw [<->] (frame.south east) -- (frame.south west) node[midway,above] {$l$};}]
\tcbitem [at end tikz={\draw [<->] (frame.south east) -- (frame.south west) node[midway,above] {$n-k-l$};}]
\tcbitem Leon:
\tcbitem[raster multicolumn=2] $p$
\tcbitem $0$
\tcbitem $t-p$
\tcbitem Stern:
\tcbitem $p$
\tcbitem $p$
\tcbitem $0$
\tcbitem $t-2p$
\tcbitem Finiasz/Sendrier:
\tcbitem[raster multicolumn=3,sidebyside] $p$ \tcblower $p$
\tcbitem $t-2p$
\tcbitem Bernstein (Ball):
\tcbitem[raster multicolumn=2,sidebyside] $p_1$ \tcblower $p_1$
\tcbitem[sidebyside] $p_2$ \tcblower $p_2$
\tcbitem $t-2p_1-2p_2$
\end{tcbitemize}
\end{document}
which produces

As mentioned earlier, to set columns to different widths, raster force size=false seems to be required but I'm not sure how to successfully adjust widths with add to width while simultaneously using raster multicolumn so the adjustments require a bit more manual effort.
\documentclass{article}
\usepackage[most]{tcolorbox}
\begin{document}
\begin{tcbitemize}[raster width=15cm,raster columns=5,
raster equal height=rows,
raster force size=false,
enhanced,sharp corners,colback=white,colframe=black,
top=0mm,bottom=0mm,
left=0mm,right=0mm,middle=0mm,sidebyside gap=0mm,
halign=center,valign=center,halign upper=center,halign lower=center,
raster left skip=0mm,raster right skip=0mm,
raster column skip=0.5mm,
raster column 1/.style={blanker,halign=left},
raster row 1/.style={blanker},
raster row 4/.style={blanker}
]
\tcbitem
\tcbitem [add to width=2cm,at end tikz={\draw [<->] (frame.south east) -- (frame.south west) node[midway,above] {$k$};}]
\tcbitem [add to width=4cm,at end tikz={\draw [<->] (frame.south east) -- (frame.south west) node[midway,above] {$n-k$};}]
\tcbitem[blanker,add to width=-3cm]
\tcbitem[blanker,add to width=-3cm]
\tcbitem Plain ISD:
\tcbitem[add to width=2cm] $0$
\tcbitem[add to width=4cm] $t$
\tcbitem[blanker,add to width=-3cm]
\tcbitem[blanker,add to width=-3cm]
\tcbitem Lee-Brickell:
\tcbitem[add to width=2cm] $p$
\tcbitem[add to width=4cm] $t-p$
\tcbitem[blanker,add to width=-3cm]
\tcbitem[blanker,add to width=-3cm]
\tcbitem \rule{0mm}{5mm}
\tcbitem[add to width=2cm]
\tcbitem[add to width=-1cm,at end tikz={\draw [<->] (frame.south east) -- (frame.south west) node[midway,above] {$l$};}]
\tcbitem[add to width=2cm,at end tikz={\draw [<->] (frame.south east) -- (frame.south west) node[midway,above] {$n-k-l$};}]
\tcbitem[blanker,add to width=-3cm]
\tcbitem Leon:
\tcbitem[add to width=2cm] $p$
\tcbitem[add to width=-1cm] $0$
\tcbitem[add to width=2cm] $t-p$
\tcbitem[blanker,add to width=-3cm]
\tcbitem Stern:
\tcbitem[add to width=-0.5cm] $p$
\tcbitem[add to width=-0.5cm] $p$
\tcbitem[add to width=-1cm] $0$
\tcbitem[add to width=2cm] $t-2p$
\tcbitem Finiasz/Sendrier:
\tcbitem[add to width=4cm,sidebyside] $p$ \tcblower $p$
\tcbitem[add to width=2cm] $t-2p$
\tcbitem[blanker,add to width=-3cm]
\tcbitem[blanker,add to width=-3cm]
\tcbitem Bernstein (Ball):
\tcbitem[add to width=2cm,sidebyside] $p_1$ \tcblower $p_1$
\tcbitem[add to width=-1cm,sidebyside] $p_2$ \tcblower $p_2$
\tcbitem[add to width=2cm] $t-2p_1-2p_2$
\end{tcbitemize}
\end{document}
which produces
