$ \mathrm{GL}(2,3) $ is the group of $ 2 \times 2 $ matrices over the field with 3 elements. It has $ 48 $ elements and it is the Schur cover of $ S_4 $ of $ + $ type, fitting into a central extension $$ 1 \to 2 \to GL(2,3) \to S_4 \to 1 $$ It is stored in GAP as SmallGroup(48,29).
The binary octahedral group is slightly less well know, but it is a maximal subgroup of $ SU(2) $ given by lifting the octahedral group $ S_4 \subset SO(3,\mathbb{R}) $ through the double cover $ 1 \to 2 \to \mathrm{SU}(2) \to \mathrm{SO}(3) \to 1 $. It has various other descriptions given here. It has $ 48 $ elements and it is the other Schur cover of $ S_4 $, the one of $ - $ type, fitting into a central extension $$ 1 \to 2 \to \mathrm{2O} \to S_4 \to 1 $$ It is stored in GAP as SmallGroup(48,28).
These two groups are both central extensions of the form $ 2.S_4 $ but in GAP the command CharacterTable("2.S4") just gives the table for $ GL(2,3) $. Why is that?
They have different character tables and you can check easily from the Frobenius Schur indicator that $ GL(2,3) $ does not embed in $ SU(2) $ while the binary octahedral group does.
What is the most straightforward way that show these two groups are not isomorphic (without using GAP)?
Also why does GAP assume CharacterTable("2.S4") is the plus type schur cover? Is there a way of directly accessing the minus type schur cover of $ S_n $?
related to The "fake $\mathrm{GL}_2(\mathbb{F}_3)$" and the binary octahedral group
The easiest way to distinguish the groups is likely through elements of order 2, as Tim Seifert already noted.
You can construct the two types of Schur covers in GAP with the command:
SchurCoverOfSymmetricGroup( <n>, <p>, <sign> )wherepis the characteristic in which the group is represented as matrix group.The character table library uses names that are consistent in the context of the ATLAS, but do not guarantee every extension of this type to be covered.