As health checks can be run asynchronously in the background inside a scheduler, the return order can vary, as can the severity level. If a warning is returned for a category, and then a critical error it will show the category as warning rather than critical.
Execute the healthchecks such that a warning and critical is returned for the same category, as per the screenshot.
This is easier to reproduce by preventing Atlassian Marketplace access so the End of Life check takes longer to run.
The category has the highest warning level - in this case that is critical.
The category uses the warning level that is returned first, as per the screenshot this is warning.