Poprawnie wskazany znacznik to <div>, bo właśnie on w HTML służy do ogólnego grupowania elementów w blok. <div> jest elementem blokowym (block-level), co oznacza, że domyślnie zajmuje całą dostępną szerokość i zaczyna się od nowej linii. Z punktu widzenia przeglądarki i CSS jest to taki „kontener”, do którego wrzucasz inne elementy, żeby sensownie ułożyć strukturę strony. Bardzo często używa się <div> do tworzenia sekcji layoutu: nagłówka strony, głównej zawartości, bocznego panelu, stopki. Przykładowo: <div class="container"> ... </div> pozwala Ci potem w CSS ostylować całą tę grupę jednym zestawem reguł, np. ustawić szerokość, marginesy, tło czy ramkę. W nowocześniejszych projektach <div> często łączy się z flexboxem albo gridem, np. <div class="grid"> jako główny kontener siatki. Z mojego doświadczenia <div> jest jednym z najczęściej używanych znaczników, ale warto pamiętać o semantyce: tam gdzie to możliwe, lepiej użyć <header>, <main>, <section>, <article>, <footer>. One też są blokowe, ale niosą dodatkowe znaczenie dla czytników ekranu i SEO. Gdy jednak potrzebujesz po prostu neutralnego kontenera blokowego, bez konkretnej semantyki, <div> jest dokładnie tym, czego szukasz i jest to zgodne z dobrymi praktykami opisanymi w specyfikacji HTML Living Standard.
W tym pytaniu chodziło konkretnie o grupowanie elementów w jeden blok, czyli o wybór typowego elementu blokowego, który pełni rolę ogólnego kontenera. Bardzo łatwo tu pomylić różne znaczniki, bo większość z nich po prostu „coś wyświetla”, ale ich rola w strukturze dokumentu HTML jest zupełnie inna. Znacznik <p> tworzy akapit, czyli logiczny fragment tekstu. Jest również elementem blokowym, ale jego przeznaczenie jest ściśle semantyczne: ma zawierać treść akapitu, a nie dowolne grupy elementów. Wrzucanie tam divów, formularzy czy skomplikowanych struktur to zła praktyka i często prowadzi do błędnego DOM oraz dziwnych efektów w różnych przeglądarkach. Z punktu widzenia standardów HTML <p> nie jest neutralnym kontenerem, tylko konkretnym elementem tekstowym. Z kolei <span> to przeciwieństwo tego, czego szukamy: jest elementem liniowym (inline). Używa się go do zaznaczania fragmentów tekstu lub małych kawałków treści wewnątrz innych elementów, właśnie bez łamania linii, np. do nadania koloru jednemu słowu albo do oznaczenia krótkiego fragmentu dla JavaScriptu. Typowy błąd to traktowanie <span> jak „mini-diva” i próba budowania na nim całych układów strony. Da się to czasem wymusić przez display:block w CSS, ale to obejście, a nie zgodne z ideą HTML rozwiązanie. Natomiast <param> w ogóle nie służy do prezentacji treści ani układu. To znacznik używany historycznie wewnątrz <object> do przekazywania parametrów obiektom osadzanym na stronie (np. wtyczkom, apletem). Dzisiaj praktycznie się go nie używa w nowoczesnym webdevie, a już na pewno nie do grupowania czegokolwiek. Typowe błędne myślenie przy takich pytaniach polega na patrzeniu tylko na efekty wizualne („to też robi nową linię” albo „to też coś grupuje”) zamiast na semantykę i przeznaczenie znacznika. Do neutralnego, blokowego grupowania elementów, które potem stylujemy w CSS albo manipulujemy w JavaScript, standardowo używa się <div> i to jest zgodne zarówno z dokumentacją, jak i z praktyką w realnych projektach.