Here is what the spec says about display: table-caption
:
table-caption (In HTML: CAPTION)
Specifies a caption for the table. All elements with 'display: table-caption' must be rendered, as described in section 17.4.
And here is what the section 17.4 says about rendering of caption boxes:
The caption boxes are block-level boxes that retain their own content, padding, margin, and border areas, and are rendered as normal block boxes inside the table wrapper box.

The key part is that they are rendered as normal block boxes and hence each of them is displayed one below the other (as in, in their own row).
Other points to note: (A summary of my discussion with GCyrillus in comments)
- Parent container with
display: table
is not required for a child to have display: table-cell
or display: table-caption
. You can find more details and reference to the relevant part of the spec in this SO thread
- There should ideally be only one caption per table. User Agents probably don't expect multiple captions to be provided under the same parent/table and it probably explains why Firefox renders it differently from Chrome. But details on that are beyond the scope of this answer (in my opinion) as the question only asks why display: table-caption causes vertical layout.
- I concur with GCyrillus, it is definitely bad practice to use
display: table-caption
on multiple elements under the same parent. I believe you were doing trial and error in an attempt to learn.