Is it possible to define material for all parts in assembly at once, without opening each part and define material for it?
No. Since parts are typically created one at a time, that's when the material should be applied. In the case of imports I expect a template can be used, but would have to research to be sure.
Other than that, create a Mapkey that assigns the material and work through the assembly by opening and running the mapkey. If it takes more than 15 seconds per part I would be surprised.
As David mentioned, it is not possible to assign material to components at assembly, you may try using mapkey.
A solution for this has been implemented in Creo 7.0. Please refer to TS Article CS105095 for steps and a GIF animation demonstration.