Esta é uma questão de estilo (ou preferência), pois o intérprete não se importa. Pessoalmente, eu tentaria não fazer a declaração final de uma função que retorna um valor em um nível de recuo diferente da base da função. O resto do exemplo 1 obscurece, mesmo que ligeiramente, onde está o final da função.
Por preferência eu uso:
return A+1 if (A > B) else A-1
Como ele obedece à boa convenção de ter uma única declaração de retorno como a última declaração na função (como já mencionado) e ao bom paradigma de programação funcional de evitar resultados intermediários no estilo imperativo.
Para funções mais complexas, prefiro dividir a função em várias subfunções para evitar retornos prematuros, se possível. Caso contrário, volto a usar uma variável de estilo imperativa chamada rval. Tento não usar várias instruções de retorno, a menos que a função seja trivial ou a declaração de retorno antes do final seja resultado de um erro. O retorno prematuro destaca o fato de que você não pode continuar. Para funções complexas projetadas para ramificar-se em múltiplas subfunções, tento codificá-las como instruções de caso (orientadas por um ditado, por exemplo).
Alguns pôsteres mencionaram a velocidade de operação. A velocidade do tempo de execução é secundária para mim, pois se você precisar de velocidade de execução, o Python não é a melhor linguagem para usar. Eu uso o Python como a eficiência da codificação (isto é, escrever código sem erros) que é importante para mim.