There are various reasons why you would want one over the other, both have their uses.
The collision event will run after all the instances step events have taken place, and the instances have moved via their in-built speed variables, but before the end step event.
The place_meeting code can be run in the step event when you want it, so it gives you more control. You can also run place_meeting to predict a collision by using x/y+speed like variables, so you can test if a collision will happen this step, where as the collision event will only trigger when the collision actually happens, so any code in the step event relying on the collision, will run the next step.
If the timing of those things don't matter, or you don't care about controlling what happens, then a collision event is fine to use.
Also if you use a state machine, it might be painful to have place_meeting checks in each state, where as a collision event doesn't care and will run no matter what state, or code is in the instances step event.