• The standard seems to be to shrink logs after each part of the maintenance run but that feels a bit dodgy to me.

    Nope, absolutely fine. Just don't shrink them to 1MB 🙂

    If you've a good idea how large the log files need to be, it might even be wise to grow them at the start of the maintenance window.

    You might be able to reduce log file usage by switching to bulk-logged recovery model for the duration of the maintenance run (if you're using full), just be aware you might lose the ability to do point-in-time recovery while in that model.

    If you're using the simple model try running CHECKPOINT between large index operations.

    Other tricks:

    Only rebuild/reorg indexes that need it.

    Avoid using ALTER INDEX ALL, seems to hold more log space.