After further investigation, I don't think this bug is specific to _Optional:

void f(void *t);
void g(char *t);
void h(int *t);

void foo(void)
{
  volatile char *t = 0;
  f(t); // undiagnosed violation
  g(t); // undiagnosed constraint violation
  h(t); // undiagnosed violation

  const char *s = 0;
  f(s); // undiagnosed constraint violation
  g(s); // diagnosed constraint violation
  h(s); // undiagnosed violation
}