Обе фразы относятся к будущему, но используют разные временные формы:
«Я должен быть дома сегодня вечером» — это выражение в настоящем времени (обычно в значении необходимости или обязательства в будущем). Это можно считать примером использования настоящего времени для обозначения будущего.
«Я буду дома сегодня вечером» — это предложение в будущем времени (простое будущее, future simple).
Итак, если говорить о настоящем времени, то правильнее — «я должен быть дома сегодня вечером», так как это выражает необходимость (долженствование), которая относится к будущему.