How to make smoke puff repeatedly in an animation
Smoke "Repeatedly"

If you mean bake one sequence of "puff" and use it several times - NO WAY. Even baked sim (saved as external) - voxel texture that can be reused as any other texture on any object (with the same dimension) ... there is not an option to specify appearence in time. 

Even if you set Domain Object as Particle Object and use it (without physics) for repeatedly appeared smoke. The baked sim is played only once. Other particle instances are represented just by last baked frame.

How to offset multiple smoke instances by time?

Offset Start

NO WAY to offset start of baked smoke, you can only set start  of simulation in Physics Properties > Smoke > Cache > Simulation Start

Solution to just rename files (part of given name containes a frame number), did not work for me (for a reason described above). 

Moving a Smoke Simulation in Time

There was some workaround but for negative start.