First, there are several method available following the spec, not only GET and POST
I don't think this is a security reason, it's more a matter of respecting standards (e.g REST methods).
I personally use different methods for several behaviours. For me, there's the action of SEEING the edition, and APPLYING the edition.
That's two different behaviours for a single URL. Even if the response at the end will tends not to change, the behaviour at controller level is different.
I think this is a matter of personnal preference, I like rather see
/**
 * @Route("/edit")
 * @Method({"GET"})
 * @Template
 */
public function editAction()
{
    $obj = new Foo;
    $obj->setBaz($this->container->getParameter('default_baz'));
    $type = new FooType;
    $form = $this->createForm($type, $obj, array(
        'action' => $this->generateUrl('acme_foo_bar_doedit'),
        'method' => 'PUT'
    ));
    return array(
        'form' => $form->createView()
    );
}
It's pretty clear what it does. It just instanciates the form you need, no user input are processed.
Now, you can add your action to process the edition by adding a second method
/**
 * @Route("/edit")
 * @Method({"PUT"})
 * @Template("AcmeFooBundle:Bar:edit.html.twig")
 */
public function doEditAction(Request $request)
{
    $obj = new Foo;
    $type = new FooType;
    $form = $this->createForm($type, $obj, array(
        'action' => $this->generateUrl('acme_foo_bar_doedit'),
        'method' => 'PUT'
    ));
    $form->handleRequest($request);
    if ($form->isValid()) {
        // Play with $obj
    }
    return array(
        'form' => $form->createView()
    );
}
Easy too, and can easily be used elsewhere in your application (rather than in the default edition page)