Good at используется тогда, когда человек умеет по настоящему делать что-то хорошо, он специалист в своей области. После good at может идти существительное или глагол. Если идёт глагол, то к нему мы добавляем окончание ing.
For example:
📌 Tom is good at playing hockey.
📌 Tom is good at hockey.
📌 Monkeys are good at climbing trees.
📌 She is good at math.
Good with более узконаправленное и использутся тогда, когда человек хорошо владеет каким-либо инструментом, который ему необходим для работы, какой-либо деятельности. Be good with можно использовать как с животными, так и с людьми.