Esta es una cuestión de estilo (o preferencia) ya que al intérprete no le importa. Personalmente, trataría de no hacer la declaración final de una función que devuelve un valor en un nivel de sangría que no sea la base de la función. El otro en el ejemplo 1 oculta, aunque solo sea ligeramente, dónde está el final de la función.
Por preferencia yo uso:
return A+1 if (A > B) else A-1
Como obedece tanto la buena convención de tener una sola declaración de retorno como la última declaración en la función (como ya se mencionó) y el buen paradigma de programación funcional de evitar resultados intermedios de estilo imperativo.
Para funciones más complejas, prefiero dividir la función en múltiples subfunciones para evitar retornos prematuros si es posible. De lo contrario, vuelvo a usar una variable de estilo imperativa llamada rval. Intento no usar múltiples declaraciones de retorno a menos que la función sea trivial o la declaración de retorno antes del final sea como resultado de un error. Regresar prematuramente resalta el hecho de que no puedes continuar. Para funciones complejas que están diseñadas para ramificarse en múltiples subfunciones, trato de codificarlas como declaraciones de casos (impulsadas por un dict, por ejemplo).
Algunos carteles han mencionado la velocidad de operación. La velocidad del tiempo de ejecución es secundaria para mí, ya que si necesita velocidad de ejecución, Python no es el mejor lenguaje para usar. Utilizo Python como la eficacia de la codificación (es decir, escribir código libre de errores) lo que me importa.