¡Hola Yineth!
Entiendo tu duda sobre la diferencia entre JoinTable y mappedBy en JPA.
JoinTable es una forma de crear una tabla de unión para una relación ManyToMany entre dos entidades. En cambio, mappedBy es una forma de especificar que la relación ManyToOne/OneToMany ya está definida en la otra entidad y se debe mapear a esa relación.
En el caso específico que mencionas, el instructor decidió utilizar OneToMany(mappedBy="pedido") porque la relación ya estaba definida en la entidad Pedido y solo necesitaba mapearla en la entidad Producto.
En cuanto a tu pregunta sobre si se podría haber dejado JoinTable, sí, se podría haber dejado si solo necesitabas consultar información de la unión de dos tablas. Sin embargo, si necesitabas interactuar con la información de la unión de las dos tablas, lo mejor es tener una entidad que represente esa unión.
Espero haber aclarado tus dudas. ¡Buenos estudios!