Начнём с определения
rem/em связаны с размером шрифта пользователя/корня, поэтому лучше уважают настройки ОС и браузера.
Разница
px — абсолютные CSS-пиксели; при некоторых сценариях хуже масштабируются относительно user font settings (зависит от того, как задан корень).
rem — относительно html font-size; удобно для единой шкалы типографики.
em — относительно шрифта родителя; полезно локально, но легко словить «сложный процент».
html { font-size: 100%; }
h1 { font-size: 1.75rem; }
.button { padding: 0.5em 1em; }
Итог
Для type size чаще rem: предсказуемая шкала + дружелюбность к zoom/user font. px ок для границ/теней, осторожнее для текста.