squareMatrixQはMatrixQがFalseの時の値を持っていないから、
Falseを返したいなら、書き方が少し違いますが

squareMatrixQ[a_] := False /; !MatrixQ[a]

squareMatrixQ[a_] := Equal @@ Dimensions[a] /;MatrixQ[a]