They are not quite equivalent.

* `@private` causes the class to not be included in the YARD output when `--no-private` is passed to YARD. See [here](http://rubydoc.info/gems/yard/file/docs/Tags.md#private).
* `@api private` keeps the class in the YARD output, but adds a "you shouldn't use this directly" notice.  [Example](http://rubydoc.info/gems/rspec-core/RSpec/Core/SharedContext.record).  See [here](http://rubydoc.info/gems/yard/file/docs/Tags.md#api).

I have a slight preference for `@private` over `@api private` as I think the public API of RSpec is quite a bit smaller than the number of internal classes and methods, and it adds a lot of noise to the docs to include everything with the notice.  Mostly I was just being consistent with the other places I was updating the docs, though.