Eeny, meeny, miny, moe

Pyth, 10389 84 chars

Saved 18 bytes with string compression, thanks to @Dennis and @FryAmTheEggman
Saved another byte thanks to @isaacg

Warning: there are many unprintables in the code; use the links below to try it.

VQjd%Q>cs[J."@y)òÎ5O¹c×Ú"."@yæ\J}ÇZH66¥ÓÀD¸¶=ðÉ §J%ÔþÖúÅ="J"MOE!")\@N


Try it online | Test suite

Could probably be golfed. Suggestions welcome!

How it works

VQjd%Q>cs[J."..."."..."J"MOE!")\@N    Implicit: Q = eval(input)
VQ                                    For each item N in range 0...int(Q):
[                    )        Create an array out of the following:
J."..."                       Set J to this string, decompressed. ("[email protected]@[email protected]")
."..."                 This string, decompressed. ("[email protected]@[email protected]@[email protected]")
J                J.
"MOE!"          "MOE!".
s                              Join the array with the empty string.
c                       \@      Split the result on "@".
>                          N     Cut off the first N items.
%Q                                 Take every Qth item.
jd                                   Join with spaces.


Jelly, 84 bytes

“£Dṡ“Ṙ©“Ė“¡Ḳ⁵“=U“¡Ẹ⁵“¡Ṇm“ȯf“ŀQ“ÞṖċ¥“ṅ_“Ẉ1“¡æḷ“¡ƒmxĠ“¡ṇƭEỤr“¡Þ¦»ṫ-2;;“MOE!”W¤sƓZj€⁶j⁷


Try it online!

JavaScript (ES6), 167 bytes

l=Array(n=+prompt()).fill;${s=Eeny meeny miny }moe Catch a tiger by the toe If he hollers let him go${s}MOE!.split .map((w,i)=>l[i%n]+=w+ );alert(l.join
)

Explanation

l=Array(              // l = array of lines
n=+prompt()         // n = input number
).fill;             // initialise l as empty strings

${s=Eeny meeny miny }moe Catch a tiger by the toe If he hollers let him go${s}MOE!

.split .map((w,i)=> // for each word w
l[i%n]+=w+        // add it to the lines
);
alert(l.join
)                    // output the lines