Это всего лишь способ ограничить функционал, только происходит он на стадии вычисления, а не проверки. С тем же успехом можно число со строкой пытаться складывать и выдавать резульат (билеберду). Для сложения например или len интерпретатор делает предварительную проверку типов (про предвариткльную не уверен), а для *args type, help и т.п. нет.