I would say there are two more esoteric options: "no memory allocation at all outside of the program stack" (like... i dunno... lambda calculus?) and fancy-pants computer sciency things like linear types. No sane language does either of those, though.
Good points! I tend to think of linear types as a more general kind of RAII -- like there's a spectrum that goes RAII -> borrow checker -> linear types -- but maybe it does warrant its own category.