Both the author of i3 and the author of i3-gaps (who is also a maintainer of i3) originally opposed merging the i3-gaps code because the code was a bit hacky and had certain edge cases where it would break things (e.g. you couldn't enable both gaps and titlebars simultaneously). This was done deliberately so that the two codebases could be easily kept in sync. They weren't necessarily opposed to introducing a gaps-like feature if an implementation was deemed acceptable.
Unfortunately this state persisted for years, and it turns out gaps is a popular feature, so they both eventually decided to bite the bullet, merge it, and then work on cleaning things up rather than waiting indefinitely for a unicorn implementation that was likely never going to appear.