It is pretty normal, I guess, to use \begin{array} ... \end{array} to model matrices, when more control is required than you get with pmatrix, bmatrix, etc., with the proper \left and \right, and the relevant symbol.
Now, I need smallmatrix, but I need more control. Basically, I'd like to model \begin{smallmatrix} ... \end{smallmatrix} with \begin{array} ... \end{array}.
It's not as easy as just putting a command left and right of \begin{array} ... \end{array}. Should I use \scalebox?
\begin{array}{c|c}
a & b \\ \hline c & d
\end{array}
As you can see, I'm using verical and horizonal lines. Now I'd need that, but in this matrix:
\begin{smallmatrix}
a & b \\ \hline c & d
\end{smallmatrix}
Is that even possible?

smallmatrixis optimized for two line arrays so that the delimiters around them don't grow too much; as soon as you add a horizontal rule the size will grow. A partitioned matrix is best treated in a display.