I don't see anything particularly wrong with the style.
PLA is 4 cycles,
LDA $100+N, X is also 4, but also has the overhead of
TSX and consuming the
X register.
PLA is also 2 bytes smaller. I think these are valid but minor reasons to consider this technique,
iff you need your parameters on the stack
and you can consume them in a specific non-overlapping order. If you've got to store any to RAM, you might as well have just used that RAM to pass the argument.
I find the stack most useful for
recursive functions, or
inefficiently resolving RAM-overlap between functions. I would not normally be passing parameters on the stack, and usually it wouldn't be in performance sensitive code. The fastest way to pass parameters not in a register is the zero page, as koitsu suggested. This is also what I mean about RAM-overlap; if due to lack of foresight two functions need to use the same RAM variables for parameters and one needs to call the other, I might use the stack to temporarily save them around the call.
I don't think the "
RTS trick" is applicable here, it is maybe a similar idea but isn't the same problem, or really applicable to this one.
Anyhow, I don't see anything wrong with it, but I can't think of any good application for it either. A C compiler might have a use for more efficient stack usage, if you were writing one. I don't really see accessing variables on the stack as dangerous or error prone though.