Why would include(locate_template) work but not get_template_part()?

when you use get_template_part, your file navigation.php cannot access variable $navigation_type. but when you do include and locate_template it is simply like including a php file so it can access that variable.
It is due to scope of variable in your context.