The main difference is the fact that you can do thing in Cloud Functions for Firebase that act in response to things that happen within your Firebase project, such as database writes, file storage updates, analytics conversion events, and new user authentication. You’ll have a very hard time doing all of these in an App Engine instance.
The other big difference is the fact that App Engine lets you control individual instances and how they scale, while Cloud Functions only scales automatically according to demand, and you don’t control the instances. You just write and deploy code.
Following from that, App Engine gives you the flexibility to perform long-running operations, while Cloud Functions is currently limited to 9 minutes.
There are many other differences, but the first two here pretty much cover the main points.