No. That is exactly how they are intended to work. From the docs:
SetVirtualJoystickVisible
Sets whether the joystick is visible on screen, this does not affect its ability to accept input, use SetVirtualJoystickActive to affect if a virtual joystick will accept input. An invisible joystick can still be active.
SetVirtualButtonVisible docs:
Sets whether the virtual is visible on screen, this does not affect its ability to accept input, use SetVirtualButtonActive to affect if a virtual button will accept input. An invisible button can still be active.
If you are using the regular IDE, just hit F1 with your cursor over a command to bring up the docs for that command.