Gol><>, 40 bytes
`e2RFL3%zR"zziF"L5%zR"zzuB"lQlRoaoC|LN|;`e2RFL5%zR"zzuB"L3%zR"zziF"lQlRoaoC|LN|;
Updated for 0.4.0! I'm still tinkering with loops and trying to figure out how to do things best, but this is looking good so far.
Explanation
`e Push 'e', or 101
2RF ... | Execute F for loop twice - the first time activates the loop, and the
second time updates it. This effectively makes the loop start from 1
L3%zL5%z Push 1 if loop counter % 35 is 0, else 1
R"zziF"R"zzuB" Push "Fizz""Buzz" (top of stack) number of times
L5%zL3%z Push 1 if loop counter % 53 is 0, else 1
R"zzuB"R"zziF" Push "Buzz""Fizz" (top of stack) number of times
lQ ... | If the stack is not empty...
lRo Output stack
ao Output newline
C Continue for loop
LN Otherwise, print loop counter with newline
; Terminate program
As we can see, there's a lot of abuse of R
, which pops the top of the stack and executes the next instruction that many times.