The rule for just about anything is "the fewer cache lines you can use, the better". How you accomplish that (if you even choose to try) is a matter of programming (not necessarily a simple matter of programming).
As Jonathan Scott mentioned, if you're going to try to "align" you at least need to make sure that your module is on a strong enough boundary. If you want to do cache-alignment stuff (i.e., 256-byte boundary) within a module, you'll need your module loaded on a page boundary. z/OS does not support loading modules on boundaries other than doubleword and page (and maybe, going forward, 1M-boundary for RMODE 64). Most relative-branch modules find the need to have a static area (whether for literals or other things) and find it convenient to locate such an area with a register (a base reg for static data, in this case). Various z/OS macros require addressability to wherever a literal generated by the macro might get placed. Obviously you could set that up temporarily with LARL, wherever needed, if you choose not to devote a reg for that purpose. Peter Relson z/OS Core Technology Design
