App Engine is better suited to applications, which have numerous pieces of functionality behaving in various inter-related (or even unrelated) ways, while cloud functions are more specifically single-purpose functions that respond to some event and executes some specific task.
App Engine offers various options of language, which helps you write code in your favourable programming language and more management options, while cloud functions are restricted in those fields.You could easily copy Cloud Functions on App Engine, but replicating a large scale App Engine application using a bunch of discrete Could Functions would be difficult. For example, the backend of Spotify is App Engine based.
Another way to put this is that for a significantly large application, starting with a more complex system like App Engine can lead to a codebase that is less complex, or at least, easier to manage or understand.
Ultimately these both run on similar underlying infrastructure at Google, and it's up to you to decide which one works for the task at hand. Furthermore, there is nothing stopping you from mixing elements of both in a single project.