Play arm and weapon animations at the same time?

I have a firearm skeletal mesh and first person arms skeletal mesh and I need them to both animate when player fires.

Should I just create 2 animation assets and play them both at the same time or is there some build-in solution for animating multiple meshes in sync?

You could create montage of your arms fire animation and weapon fire animation by right clicking on your animation asset Create → AnimMontage. Make sure to open the montages and lower the Blend-In/Blend-Out time if the animations doesn’t play after connecting everything.
Here is how to connect it.

You could use Fire Event or just Left Mouse Button.