The following approaches could work well:
(Where an invisible object is used to define the empty space), This is the most direct answer and it can probably be made to work, but also may have problems if the jaw is a non manifold mesh. As a workaround in your case you could remove a part of the jaw, add a inset that the boolean operates on, this makes the computations much more simple but then you need to make sure the seams between the inset and the rest of the geometry are not noticeable.
Where a bone or shape key is used to deform the mesh to create the hole, this is fast and predictable but has some possible drawbacks. UV's & vertex-colors etc will distort with the mesh, drilling multiple holes in the one cavity (where the holes overlap) becomes difficult. (something boolean can do). The key to making deformation work here is creating the geometry so the deformation looks good. and you don't loose volume around the deformation in an unrealistic way.
Replace parts of the mesh over time by animating visibility, may seem a weak solution and has the disadvantage that the animation wont be smooth and you have to finalize the mesh before making duplicates.. but it gives a lot of control.
Other options which I think wouldn't work so well but including for completeness:
Sometimes you can use the depth to do operations you might assume you would need to do on geometry, there are tutorials showing clever use of depth buffer for similar tasks.
For certain cases negative metaballs can be used well for this effect.