En mi opinión de metiche profesional:
1º - siempre el proceso de ejecutar la función será más rápido que el proceso de crearla y ejecutarla. Pero la creación se hace una sola vez, así que tampoco es para tanto
2º - cuando declarás el objeto con sus funciones las estás creando. Dado que todas las funciones se crean dentro de un objeto (en el caso del navegador, el objeto window), la única sobrecarga que estás generando es la de crear una variable. No parece mucho
3º Javascript es un lenguaje funcional, lo cual entre otras cosas quiere decir que las funciones son variables como cualquier otra. Por lo tanto, lo que le suceda a un objeto en su condición de variable le podrá suceder a una función también, lo mismo a la inversa. Por tanto, la respuesta es la misma que a la pregunta 1
4º pues sí que es un desperdicio, sin duda: el navegador tendrá que compilar las 50 funciones solamente para usar 1. Pero sería lo mismo cargar 50 funciones: lo que está fallando ahí es la modularización de tu programa JS
5º La misma ventaja que tiene trabajar con POO en vez de programación estructurada, la misma ventaja que tiene siempre evitar llenar el espacio de nombres global con nuestras variables. dentro de lo posible hay que encapsular lo que agreguemos para evitar conflictos.
Saludos.