Not sure I understand the question.
In the tiny memory model, everything outside the zero page must be explicitly placed with a pragma.
In the small memory model, everything which should take advantage of zero page addressing and which should be allocated in the zeropage has to be explicitly qualified with a pragma instead.
However a failure in doing so in the small memory model only causes that the compiler wont take advantage of the more efficient zero page addressing modes, it still will just work fine though.
For locals (on the stack), I would not expect a significant increase in code size when using small versus tiny.
For globals tiny/using zero page is more efficient, and therefore I would allocate the often used variables in the zero page when using the small memory model and the code efficiency/size is critical.
In the small memory model the stack can be anywhere in the 64k addressing range, well it should have RAM there :smileyhappy:. The stack can be (even partially) in the zero page, but there is no advantage in doing so. So I would fill the zero page with globals instead.
Daniel