It's not easy to provide some recommendation for your question. I think there is no best practise for this problem as whole.
Your idea with flags is not bad and yes they are consume memory, but you can use bit field as a flag register (instead of int as many people doing it by this way). Single byte provides room for 8 bit flags. Its setting and reading is very effective in asm after translation.
Example of use by me: We have LCD with 4 rows, then I can use 1 flag for rewriting whole row - I need 4 bits.
I can use separate flags for separate values on the screen.
One recommendation: due to limited MCU's program memory space, it is better to rewrite larger part also with static data on LCD than to include many conditions in the program and waste space, if a final look is not disturbed . It is up to you to find compromise between.
...but couldn't find anything that really addressed this issue...
I can't agree, sorry. One thing which you can do, is to study the code of other people which they share it on the internet to find ideas "how to" and learn. There are a lot of inspiration on the net.