I only used SMP a bit way back when... I was using Macsyma while SMP was being developed... long story... ;-)
With regard to da'question....
Some functions in Mathematica have as an option the option Assumptions (without the dollar sign). For those functions the default value of that option is usually
Assumptions->$Assumptions
That is, the adjustable system parameter $Assumptions
will be used in those functions if no alternative value of that option is set explicitly, thereby giving a means to set a list of assumptions for all such functions in a Mathematica session. Not all functions have an Assumptions option (in fact most do not). In particular the functions VectorQ and MatrixQ do not. But functions like Simplify, FullSimplify, and in our case TensorDimensions do have the Assumptions option. Thus if you set
$Assumptions = {v1 \[Element] Vectors[3], v2 \[Element] Vectors[3]}
thus telling, for example, TensorDimensions that v1 and v2 are both R3 vectors, one will find that
TensorDimensions[v1\[TensorProduct]v2]
returns
{3, 3}
but
TensorDimensions[a\[TensorProduct]b]
returns unevaluated since there is no information about the nature of a and b.
So, the question still on the table (if it is easy enough to summarize the answer to) is how are you wanting to make use of the vectorness or matrixness of your parameters? Can your needs be met via patterns like _?VectorQ ?