xts is based on zoo, and the zoo FAQ (question 4) has this line about differing data types:
A "zoo" object may be (1) a numeric vector, (2) a numeric matrix or 
  (3) a factor but may not contain both a numeric vector and factor.
So as long as your 0s and 1s are numeric, not factor, you should be ok. It's not a hugely efficient storage medium, but storage efficiency might not be your bottleneck. 
An example: 
timestamp <- seq.POSIXt(from=as.POSIXct("2016-10-12 09:00"), 
                    to=as.POSIXct("2016-10-13 09:00"), 
                    by="min")
dat <- rnorm(length(timestamp))
foo <- xts(dat,order.by=timestamp)
Now that indicator variable:
#make this example reproducible:
set.seed(123)
dummy2 <- sample(c("event","non-event"), size=length(timestamp),
    replace=TRUE)
foo2 <- xts(dummy2, order.by=timestamp)
merged <- cbind(foo, foo2)
And that warns you:
In merge.xts(..., all = all, fill = fill, suffixes = suffixes) :
  NAs introduced by coercion
Indeed:
summary(merged)
     Index                          ..1                ..2      
 Min.   :2016-10-12 09:00:00   Min.   :-3.38110   Min.   : NA   
 1st Qu.:2016-10-12 15:00:00   1st Qu.:-0.64010   1st Qu.: NA   
 Median :2016-10-12 21:00:00   Median : 0.04047   Median : NA   
 Mean   :2016-10-12 21:00:00   Mean   : 0.03025   Mean   :NaN   
 3rd Qu.:2016-10-13 03:00:00   3rd Qu.: 0.67461   3rd Qu.: NA   
 Max.   :2016-10-13 09:00:00   Max.   : 3.25034   Max.   : NA   
                                                  NA's   :1441  
But if it's a numeric:
dummy3 <- sample(0:1, size=length(timestamp), replace=TRUE)
foo3 <- xts(dummy3, order.by=timestamp)
merged <- cbind(foo, foo3)
returns silently (and no news is good news). Let's have a look:
summary(merged)
         Index                          ..1                ..2        
 Min.   :2016-10-12 09:00:00   Min.   :-3.38110   Min.   :0.0000  
 1st Qu.:2016-10-12 15:00:00   1st Qu.:-0.64010   1st Qu.:0.0000  
 Median :2016-10-12 21:00:00   Median : 0.04047   Median :0.0000  
 Mean   :2016-10-12 21:00:00   Mean   : 0.03025   Mean   :0.4983  
 3rd Qu.:2016-10-13 03:00:00   3rd Qu.: 0.67461   3rd Qu.:1.0000  
 Max.   :2016-10-13 09:00:00   Max.   : 3.25034   Max.   :1.0000  
Since column 2 is numeric, we don't compare using equality; if that isn't intuitive to you, check out Circle One of the R Inferno (caution: PDF).
summary(merged[merged[,2] > 0.5 ,1] )
summary(merged[merged[,2] < 0.5 ,1] )
There's probably a more elegant way of doing that, but it'll get you started.
If you plan on working with xts more than trivially, I recommend the advice from the authors of xts:
At the core of an xts object is a zoo object from the package of the same
  name. ... Most of the details surrounding zoo objects apply equally to
  xts. As it would be redundant to simply retell the excellent introductory zoo
  vignette, the reader is advised to read, absorb, and re-read that documentation
  to best understand the power of this class.