The only three features I have found in the ISA so far that I think can help with call-by-name are the following:
a) As call-by-name can be used both for an assignment ("l-value" in C terms) and in an expression ("r-value"), normally you'd need two thunks for it (one to return the address as l-value, one to return the value, as returning an address may be impossible depending on the thunkified expression, and one cannot recover the address from the value). The ISA handles this by having "operand calls" for r-values and "descriptor calls" for l-values, and when a procedure is called either way, this information is stored on the stack. So the same thunk can either return an address or a value.
b) Accessing a program ("code") descriptor works differently during "normal" expression evaluation and making calls, so thunks could be potentially handled here (but I don't understand the full mechanism, see below).
c) There is a "return special" operator (opcode) which is based on the stack pointer S instead of the frame pointer F. The thunk needs to execute with reference to the frame of the calling procedure, and then it also needs to unwind the stack based on this, so potentially this operator could be used to return from a thunk.
But I have not seen how thunks are set up so they refer to the correct frame. Also, this can get nasty when having chains of procedure calls with call-by-name, unless you do a full closure and pass along the frame reference as additional parameter. But that would defy the "have hardware support for thunks" advertisement.
I tried to use the emulator in a browser to get an ALGOL program to compile and inspect the resulting code, but it doesn't work for me no matter which browser I tried. Also, it looks like inspecting the compiled code is not going to be easy, probably it needs to be dumped to "tape" or another emulated device. Maybe somebody else has more luck with that.