The reason is due to differences in data collection intervals.
Metrics reports are refreshed daily, and the Range period is set to yesterday by default for assets that are currently active.
For example, the Metrics / EC2 Instance report screenshot below was taken on Feb 10th with the data showing from the day prior:
The Metrics report will never account for assets that are discovered today by the Assets report which gets refreshed every 15 mins. This is why the Assets report counts are usually higher than Metrics reports.
Reports are not updated in real-time. CloudHealth captures data by AWS on various intervals based on the nature of the data and updates the reports accordingly.