Sorry if this is too open ended.
I've spent some time studying some various quantum algorithms that involve ancillary qubits. Some examples that come to mind are phase estimation, linear combination of unitaries (LCU), and this paper on quantum state preparation.
In phase estimation, an ancillary register of l-qubits is storing an l-bit representation of the eigenvalue associate with eigenstate prepared in the system register. In this setting it seems quite obvious why one would want to use ancillas (although I'm not sure I would've been able to come up with it myself!); you need a place to store a value that's related to the system register. Otherwise in order to obtain an energy estimate you'd need to perform measurements for each term of the Hamiltonian $H$ (or at least groups of mutually commuting terms spanning $H$) and gather enough statistics to infer the energy.
In LCU, the ancilla system is used to prepare a superposition to probabilistically apply the terms in the LC based on the relative weights of the coefficients in the LC. Then uncomputing the ancillary register and measuring a signal state (typically the all zero state) tells us that the state on the register corresponded to a normalized application of the LCU onto the input state.
These two approaches use the ancillary system in seemingly totally different ways. In the QPE approach it's used to store a value that's related to information found on the system, in LCU it's used to store a probability distribution related to the coefficients in the LCU. It's essentially a dilation to a larger Hilbert space where a subspace acts non-unitarily. Although I feel like I understand these algorithms and why they need ancillas, when designing a quantum algorithm myself, I don't find it so obvious when to use ancillas or how I would want to use them! They've always felt so mysterious to me and I've struggled to come up with algorithms that effectively use an ancillary system.
In the above linked paper, the authors were able to greatly reduce the circuit depth required for implementing an arbitrary quantum state by introducing an ancilla register with the same size as the system register and performing controlled swaps between them. This seems to be similar to a lot of width vs depth tradeoff people observe in algorithms. This raises a question, why is there such a width/depth tradeoff in algorithms?
I guess I'm interested in what patterns to look for when I'm developing an algorithm that could benefit from ancillas. When are they useful? When do I need them? How do I use them when I find I need them?
Much thanks from an algorithms baby.