(The other day) I met a bear
JavaScript (ES6), 690 bytes


f=(n=0)=&gt;n&lt;139?[...'DEFJKLMPQRVXYZ~0123456789'].map(c=&gt;s=(e=s.split(c)).join(e.pop()),s=`P2other day9Xme8a 03 09Oh ~F8t6.|H2Yme9XYM9H2VZXV M.|H2said4oZ"Why7run?|Xse2yFEin't9Go8anyDun."|Xsays4o M9"That'sEDood idea."|"Now legsDe8going9ge8m2F8of 6!"1ran9A~Lm469Bu8riKbehindZWasQa80.|In Ln8ofZT6 wasE4Re34Re9OhDlory be!P2lowes5Was4en fee8up9So IQFKI'd jump9J4rus8my luck.1jumped9IntoQ2air9Bu8XmissedQa5A ~up46.|Now7fRt9J7Lwn9XCauKtha5OnQ2~back down!Pis isQ2end9T6Ein8no moR9Unless Xsee9Tha80 onc2moR.9,|8t 7 don'8yF 6heR58branch94 t39ADRa8big2e 1|J so X0bear~way Z me9YlookedE8XI Vsized upRreQ4hP|ThMhimLfroKgh8JAndFouE aD g`)&amp;&amp;s.split`|`[(i=+'11223344012340'[n%14])&amp;&amp;i+(n/14&lt;&lt;2)]+`
`+f(n+1):''

console.log(f())



How?
The 41 unique lyric lines (including the empty one) are stored in a pipe-separated string s.
&quot;|The other day,|I met a bear,|A great big bear,|...|Unless I see,|That bear once more.&quot;

This string is compressed by replacing the most frequent sub-strings with characters that are not used anywhere else. The character set is &quot;DEFJKLMPQRVXYZ~0123456789&quot; and the substitutions are processed as follows (note that this is the decompression order):
 1. &quot;D&quot; -&gt; &quot; g&quot;         | 10. &quot;R&quot; -&gt; &quot;re&quot;         | 19. &quot;3&quot; -&gt; &quot;9A grea8big&quot;
 2. &quot;E&quot; -&gt; &quot; a&quot;         | 11. &quot;V&quot; -&gt; &quot;sized up&quot;   | 20. &quot;4&quot; -&gt; &quot; t&quot;
 3. &quot;F&quot; -&gt; &quot;ou&quot;         | 12. &quot;X&quot; -&gt; &quot;I &quot;         | 21. &quot;5&quot; -&gt; &quot;8branch9&quot;
 4. &quot;J&quot; -&gt; &quot;And&quot;        | 13. &quot;Y&quot; -&gt; &quot;looked a8&quot;  | 22. &quot;6&quot; -&gt; &quot;here&quot;
 5. &quot;K&quot; -&gt; &quot;gh8&quot;        | 14. &quot;Z&quot; -&gt; &quot; me9&quot;       | 23. &quot;7&quot; -&gt; &quot; don'8you &quot;
 6. &quot;L&quot; -&gt; &quot;fro&quot;        | 15. &quot;~&quot; -&gt; &quot;way &quot;       | 24. &quot;8&quot; -&gt; &quot;t &quot;
 7. &quot;M&quot; -&gt; &quot;him&quot;        | 16. &quot;0&quot; -&gt; &quot;bear&quot;       | 25. &quot;9&quot; -&gt; &quot;,|&quot;
 8. &quot;P&quot; -&gt; &quot;|Th&quot;        | 17. &quot;1&quot; -&gt; &quot;|And so I &quot; |
 9. &quot;Q&quot; -&gt; &quot;4h&quot;         | 18. &quot;2&quot; -&gt; &quot;e &quot;         |

The compressed format is the one used in several popular JS packers such as RegPack: the substituted string is stored just after a last occurrence of the substitution character. Below is an example for &quot;TwoBearsThreeBearsFourBearsFiveBears!&quot;, where &quot;Bears&quot; is packed as &quot;~&quot;:

Hence the decompression formula:
c =&gt; s = (e = s.split(c)).join(e.pop())

Once s has been decompressed, we rebuild the original verses by applying the pattern:
00 - Line A
01 - Line A
02 - Line B
03 - Line B
04 - Line C
05 - Line C
06 - Line D
07 - Line D
08 - (empty)
09 - Line A
10 - Line B
11 - Line C
12 - Line D
13 - (empty)