I understand that both translate as meaning 'a large quantity' of something, but is there any practical difference between たくさん and いっぱい, and circumstances where you would or wouldn't use one over the other? Or is it similar to the difference between 'lots' and 'many' in English?
たくさん and いっぱい can mean "many" "a lot", and they can be used interchangeably in some cases (especially when used adverbially), e.g.:
I studied a lot.
There're a lot of books in my house.
When used in this sense, いっぱい sounds more colloquial than たくさん.
And, 「たくさんの + noun」(a lot of~~) sounds okay to me, e.g. 「たくさんの木/木々」 "a lot of trees" / 「たくさんの雪が降った。」 "We had a lot of snow.", but 「いっぱいの + noun」 sounds a bit unnatural, e.g. ?「いっぱいの木/木々」 / ?「いっぱいの雪が降った。」. 「木がいっぱい…」「いっぱい木が…」「いっぱい雪が降った。」「雪がいっぱい降った。」 sound more natural. (You'd use 「いっぱいの～」 like 「人でいっぱいの部屋」 "a room full of people")
たくさん and いっぱい have other meanings, and cannot be used interchangeably in some cases, e.g.:
I am full.
The bathtub is filled with water.
The store is full of people.
1,000 yen will do/suffice.
I've had enough of / I'm fed up with your silly chatter.
Both "たくさん/ 沢山" and "いっぱい/ 一杯" mean "a lot (plenty) of" and "many," and used commonly. But to me, "いっぱい/一杯" sounds more colloqual and familiar with than "たくさん/沢山," though the latter isn't a big word at all.
For instance, I say "京都は見所が一杯ある "現場は報道記者がいっぱいいた" in conversation. But I would write "京都は見どころが沢山ある,""現場は報道記者が沢山詰めかけていた" to describe the same thing - "There are lot of places worth visiting in Kyoto" and "There were a lot of reporters on the site (of crime)" in writing.
"いっぱい" also means "to the full," or "to the limit" like "精一杯頑張ります - I'll make my best (full effort)," "落ち葉が道路一杯に散乱している - The dead leaves spread all over the pavement."