The key is to use the "fixed" package option, \usepackage[fixed]{fontawesome5}.
\documentclass[12pt]{article}
%\usepackage{fontspec}
\usepackage[fixed]{fontawesome5}
\begin{document}
\section{MWE}
The \faIcon{desktop} and \faIcon{mobile} icons should be the same width.
rmfamily:\\
\faIcon{desktop}\faIcon{desktop}\faIcon{desktop}\faIcon{desktop}\faIcon{desktop}\\
\faIcon{mobile}\faIcon{mobile}\faIcon{mobile}\faIcon{mobile}\faIcon{mobile}
\ttfamily
ttfamily:\\
\faIcon{desktop}\faIcon{desktop}\faIcon{desktop}\faIcon{desktop}\faIcon{desktop}\\
\faIcon{mobile}\faIcon{mobile}\faIcon{mobile}\faIcon{mobile}\faIcon{mobile}
\end{document}

Note that the fixed widths can vary if, for example, you are in a different font family such as \ttfamily. They will still be fixed width, just a different fixed width from \rmfamily.
Isn't there a better way?
– Tomáš Sláma Apr 01 '19 at 13:20