The grade_description field from chkn_v_checkinlabel should match the built-in grade field on a child's record the moment the label is printed. If not, something is wrong. I just checked that view and it looks right.
If you're using the tag_name field from that view, then this discussion is applicable, because the tag name could be a grade but it would be independent of the grade field or Arena's promotion setting. It's just the name that happened to be put on that tag.
The grade field is actually stored by graduation date and automatically calculates current grade by comparing that date with today's date and the GradePromotionDate organization setting. It does this calculation every time the field is referenced. So, I can't imagine how there could be a promotion delay.
When it comes to handling promotions in tags or groups (which do have to be handled manually), there's different ways to do this, no right or wrong. Here's mine: We have a tag level for school year and create a new set of tags each year for Sunday School. At promotion time, we bulk update each class of kids into their next year's class, redirect the attendance types to sync with the new year's classes/tags (a vitally important step for check-in that is easily forgotten), and mark the previous year as inactive.
But, reading your original post again... If grade_description field from that view isn't matching with the grade field on records, I'd suggest checking your GradePromotionDate org setting. Maybe consider making it blank so it defaults to 6/1 and see what happens. This setting doesn't actually change any stored data, so you don't have to worry about breaking anything.