Cita: Es conveniente hacer esos 3 inserts (insertar usuario, insertar direccion, insertar las claves foraneas) dentro de una transacción?
Eso es más una decisión de diseño que una de práctica buena o mala.
El sentido de una transacción es el crear operaciones atómicas, por lo que te puede convenir si, por ejemplo, existe la posibilidad de violar resticciones en la segunda o tercera inserción, y quieres que sólo si todas funcionan se considere bien terminada.
Pero puede darse que te interese que la primera o segunda se cumplan siempre, y que sólo la tercera se considere como transacción. Esto implicaría que prefieres que esos datos primarios se carguen si o sí. En ese caso la transacción sólo contemplaría la tercera inserción.
Como verás, no hay una regla fija: depende de tu decisión y tu decisión dependerá de las reglas del negocio.
¿A qué me refiero?
Si el cliente te dice que "Un cliente es un cliente, aunque no haya realizado una compra, sino simplemente se suscriba como tal", entonces una transacción de compra de un cliente sólo incluirá la compra dentro de la transacción confirmable, pero no el ingreso del cliente, que compondría una transacción distinta, y eso porque el cliente debe ingresar siempre, aunque la compra se cancele...
¿Se entiende la idea?
Por eso decía que es una decisión de diseño que surge de las reglas del negocio.