The difference between array and tabular is discussed formally in Difference between tabular and array environment, but I'll reference it here as well:
array is probably the fundamental tabular structure in TeX that allows for stacking thing horizontally and vertically. You don't need to include the array package in order to use an array. The package merely adds functionality to column specifications.
tabular is a text version of array.
There is also a starred version tabular* that takes a length as an additional argument, as in
\begin{tabular*}{<len>}[<vpos>]{<colspec>}
\end{tabular*}
The tabular* is made to fit <len> horizontally. It's often used in conjunction with a @{\extracolsep{<width>}} in the <colspec> (typically where <width> is \fill) to spread out columns within <len>.
See also tabularx below.
table is a float and has no concept of what is contained within it. While most people place a tabular-like structure inside a floating table, it can contain virtually anything. Placement of floats can be tricky, but this is covered in detail in How to influence the position of float environments like figure and table in LaTeX? and Keeping tables/figures close to where they are mentioned. In contrast to this, arrays and tabulars are placed as-is in the text, at the position they are coded.
tabularx is a package that extends the starred version tabular* - which requires a length to be specified - through the addition of an X-column. This new column type stretches out the tabular so that it fits within the specified fixed-width boundary. It avoids the user trying to figure out what width a p-column should be so that the resulting tabular width fits within some fixed boundary.
The following example aims to highlight the above, resulting in two similar tables:
\begin{tabular}{| p{\dimexpr0.5\linewidth-1.5\arrayrulewidth-2\tabcolsep}
| p{\dimexpr0.5\linewidth-1.5\arrayrulewidth-2\tabcolsep} |}
A & B
\end{tabular}
\medskip
\begin{tabularx}{\linewidth}{| X | X |}
A & B
\end{tabularx}

longtable provides a mixed-use case for having a too-large table that you want to split across the page boundary. Somewhat similar to wanting a non-floating table environment (in other words, having a \caption) but also allows the table to span multiple pages. That's a definite advantage, since page breaking comes with the bonus that column headers could be repeated automatically. It may require multiple compilations to settle in terms of column widths.
supertabular is a predecessor of longtable and remains in (not obsolete) since it provides a alternative syntax.
tabu attempts to provide support for all of the aforementioned structures but through a new interface/syntax.
longtabu - also provided by the tabu package, is a longtable version of the tabu table.
ltxtable provides the functionality of longtable and tabularx together inside a longtable environment.
booktabs defines a new set of horizontal lines for use in array and tabular environments under the premise of discarding the use of vertical lines; the columnar structure of an array/tabular necessarily lends itself to have horizontal separation between columns, so there's no need for additional (vertical) lines. In fact, the booktabs documentation mentions:
You will not go far wrong if you remember two simple guidelines at all times:
- Never, ever use vertical rules.
- Never use double rules.
The package aims to provide book-quality tables, hence the name booktabs.
tabularray redefines the way tables are set in code, structuring it akin to a regular document with a preamble and content. Instead of mixing code within the content like with regular tables, formatting and layout styles/options are set via key-values in the structure "preamble", thereby separating code from content, making it easier to update/change elements.
This example is taken from the tabularray documentation:
\begin{tblr}{
colspec = {rX},
colsep = 8mm,
hlines = {2pt, white},
row{odd} = {azure8},
row{even} = {gray8},
row{1} = {6em,azure2,fg=white,font=\LARGE\bfseries\sffamily},
row{2-Z} = {3em,font=\Large},
}
Tabularray & Typeset Tabulars and Arrays with \LaTeX3 \\
Author & Jianrui Lyu (tolvjr@163.com) \\
Version & \myversion\ (\the\year-\mylpad\month-\mylpad\day) \\
Code & \url{https://github.com/lvjr/tabularray} \\
Code & \url{https://bitbucket.org/lvjr/tabularray} \\
Support & \url{https://github.com/lvjr/tabularray/discussions} \\
Support & \url{https://topanswers.xyz/tex} \\
Issue & \url{https://github.com/lvjr/tabularray/issues} \\
\end{tblr}
and yields
