Are there any best practice tips regarding when one should use pack vs. grid for their layouts?
From what I've been reading via google, the concencus seems to be that grid can handle any pack scenario but not vice-versa.
To start the conversation, it appears that one use case that favors grid vs. pack is when one wants to show/hide widgets.
I always recommend grid over pack for polished applications.  There are only a few edge cases where pack is easier and fits the bill (everything in one row or col).  grid has better "composability" (e.g. megawidgets or gridding elements of gridded elements).  The reasons to prefer grid are the extra fine-tuning options that it provides.  The use of weight (which effects growing and shrinking btw), minsize and maxsize, as well as convenience features like enforcing uniform rows/columns.
A fully gridded app of any size will use (significantly) fewer frames than an equivalent packed app, and have better shrink/expand control over inner elements.
BTW, both pack and grid can show/hide sub-elements, though the syntax differs slightly between the two.  Grid is just slightly better because 'remove' (rather than 'forget') will remember the grid options on the slave widget.
When to use pack or grid layouts in tkinter?