Interestingly, Quake 3 did use a double sided stack allocator as the article describes. The engine made one big allocation at startup called the "hunk." The "low hunk" allocated long-lived data and the "high hunk" temporary data. Search for "hunk" in this source file to see the implementation [1].
[1] https://github.com/id-Software/Quake-III-Arena/blob/master/c...