What can I do with VIEW DEFINITION permissions that I can't do with ALTER permissions?
VIEW DEFINITION is a way to explicitly GRANT or DENY metadata visibility, but it's not the only way a user gets metadata visibility.
Users implicitly get metadata visibility without the VIEW DEFINITION permission on objects they own or have some other permission on:

The visibility of metadata is limited to securables that a user either
owns or on which the user has been granted some permission. For
example, the following query returns a row if the user has been
granted a permission such as SELECT or INSERT on the table myTable .

Metadata Visibility Configuration
And by default the public role has VIEW DEFINITION.  So while your user does not have the VIEW DEFINITION permission, ALTER on the database implies ALTER on all the objects, which allows the user to view the metadata of the objects.