Question: What is a good attitude from developers when discussing new features, and namely, non critical/questionable features?

Say you are developing some sort of Java like language, and the boss says: "We need pointers so that developers could fiddle with object memory directly!"

Should the developer shoot down the idea because it adds unimaginable complexity and security vulnerabilities, or should he do what's asked?

This may not be a good example, but what about things that are more in a gray area, like adding buttons that break workflow, or goes against internal structure of the program, etc.?

What is the optimal "can do" vs. "can't do" distribution for a regular programmer?

EDIT: The question is not about a bad boss :D

I was more interested how do people approach new problems that add a noticeable amount of problems while maybe being marginally useful.

Should the general attitude be:

1. yes we'll do it, screw the complexity
2. maybe
3. no, the general rework, and implications don't justify the change

What should be the reaction of a good developer?

Answer: 
The problem I see is your use of the word argue.

You must bring up design issues and the reasoning behind them, but be wary because programmers have a tendency to get defensive about positions they have taken and argue points just for the sake of arguing (Sometimes). I have to stop myself from arguing quite a bit--and I don't always succeed. Also as I get older I find I'm wrong more often than I used to be--or worse I didn't recognize how often I used to be wrong :)

If you have clearly stated requirements (the language must be safe, we need pointers to access legacy routines) then you could present how the two requirements conflict and ask which is more important. Once you have the requirements and the reasons behind them you may even be able to come up with a completely different solution that supports both requirements (JNI--kinda).

If it doesn't, well perhaps it's a good time to codify them!
As a developer, you shouldn't really care which requirements are requested to be implemented.

However, you should explain if something is unrealistic and if there are better ways.