I think the confusion results from believing random pages on the Internet:
states that they are synonymous with stack-frames
If ALL the guy has seen is Algol-68 (which I mean inclusively, i.e. counting dialects like BCPL, C, etc) then yes, because *in those languages* there is no need to be conscious about the difference between activation records and stack frames. But if the language provides reification of execution, activation records are perennial objects, i.e. they can outlive the activation. Therefore they can't be stack frames -- otherwise at the end of the activation they are garbage. So, very old Smalltalks allocated activation records on the heap, these are called "Contexts"; but this is much slower than stack frames. OOPSLA99 talks exactly about how to [internally] represent contexts on the stack but still enjoy them behave correctly as perennial objects.
So, OOPSLA99 is correct.
pointers for more basic reading on this stuff would be helpful
Hmmm... good books on higher-order programming languages count in the hundreds, so I guess it depends on what you are into. Still, one excellent book is "LISP in Small Pieces" by Christian Queinnec. Also the paper "The Essence of Algol" by John C. Reynolds immediately comes to mind.