What is the difference between UCustomMeshComponent and UProceduralMeshComponent?

I am looking for a way to generate a mesh dynamically. I found two classes that allow me to do the job. UCustomMeshComponent and UProceduralMeshComponent. Both classes inherit from UMeshComponent and looking at the description the main difference is that the UProceduralMeshComponent would allow me to create a mesh with many sections and also setting the material of each section while the UCustomMeshComponent would allow me to create a mesh by adding triangles directly.

Are there any other significant difference/advantages of one over another?

My goal is to do a simple drawing system using VR controllers, and I would like to generate a mesh along the way. Would you recommend using one of the above classes or an entirely different one?

PS: I also saw this question where there a talk about FDynamicMeshBuilder but there an explicit comment on this class about it not being efficient.